PHP中如何列出一个数组的所有规定组合?
比方:$arr=array('0'=>array(8,9),'0'=>array(5),'2'=>array(1,2));$arr是一个多维数组,$arr中含有3个数组,...
比方:
$arr = array(
'0'=>array(8,9),
'0'=>array(5),
'2'=>array(1,2)
);
$arr 是一个多维数组,$arr中含有3个数组,如何在子数组中各取1个键值,列出所有不同的3位数组合,同数组的数值只出现一次。
变成以下数组:
$arr = array(
'0'=>'851',
'1'=>'951',
'2'=>'852',
'4'=>'952'
);
请问PHP代码如何写? 展开
$arr = array(
'0'=>array(8,9),
'0'=>array(5),
'2'=>array(1,2)
);
$arr 是一个多维数组,$arr中含有3个数组,如何在子数组中各取1个键值,列出所有不同的3位数组合,同数组的数值只出现一次。
变成以下数组:
$arr = array(
'0'=>'851',
'1'=>'951',
'2'=>'852',
'4'=>'952'
);
请问PHP代码如何写? 展开
1个回答
展开全部
嵌套循环,代码如下:
$arr = array('0'=>array(8,9),'1'=>array(5),'2'=>array(1,2));
$arr2 = array();
foreach ($arr[0] as $v1) {
foreach($arr[1] as $v2){
foreach($arr[2] as $v3){
$arr2[] = $v1.$v2.$v3;
}
}
}
print_r($arr2);
追问
原始$arr数组的长度可变,比方我的原始数组变成这样就不行了
$arr = array('0'=>array(8,9), '1'=>array(5), '2'=>array(1,2), '3'=>array(4,6));
生成一维数组的排列组合中的数值长度等于count($arr)。
这样就会生成8个数组元素:
8514、8516、9514、9516、8524、8526、9524、9526
追答
动态数组的话,循环构建代码,然后eval
$arr = array('0'=>array(8,9),'1'=>array(5),'2'=>array(1,2),'3'=>array(4,6));
$arr2 = array();
$code = '';
for($i=0;$i<count($arr);$i++)
{
$code .= 'foreach ($arr['.$i.'] as $v'.($i+1).') {';
}
$code .= '$arr2[]=';
for($i=0;$i<count($arr);$i++)
{
$code .= '$v'.($i+1).'.';
}
$code = substr($code, 0,-1);
$code .= ';';
for($i=0;$i<count($arr);$i++)
{
$code .= '}';
}
eval($code);
print_r($arr2);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询