1、将上图转化成下图结果
2、可横向及纵向添加个数


第一种解决思路:
这种思路有一个前提:只能不带键的索引数组
$arr = [
0=>['红','黄','绿'],
];
function main($arr){
$max = count($arr);
if($max > 1){
for ($i=0;$i<=$max-2;$i++){
$arr[$i+1] = _inner($arr[$i], $arr[$i+1]);
}
return $arr[$max-1];
}else{
foreach ($arr as $k => $v){
for ($i=1;$i<=count($v);$i++){
$rst[][] = $v[$i-1];
}
}
return $rst;
}
}
function _inner($arr1, $arr2){
foreach ($arr1 as $k => $v){
foreach($arr2 as $key => $val){
if(is_array($v)){
$temp = $v;
array_push($temp, $val);
$rst[] = $temp;
unset($temp);
}else{
$rst[] = [$v, $val];
}
}
}
return $rst;
}第二种解决思路:先判断数组的数量count($arr),然后根据数量分别写出不同的结果(代码量太大,不在这里显示了)
最佳答案