对多个数组进行组合讨论假设有三个数组(实际不确定多少个数组):$arr1 = array(1, 2, 3, 4);$arr2 = array(10, 20, 30, 40);$arr3 = array(100, 200, 300, 400);要实现的结果:array( array(1,10,100), array(1,10,200), array(1,10,300), array(1,10,400), array(1,20,100), array(1,20,200), array(1,20,300), array(1,20,400), array(1,30,100), ...);不想用递归,但是也可以实现看看 排列组合 分享到: ------解决方案--------------------array() 可简化为 [] 是 php5.4 才有的吗?我怎么记得 php5.3 就是的呢?简单注释一下: $d = func_get_args();//读取传入的参数到数组(php4) if( count($d) $n = array_product( array_map('count', $d) ); //array_product 计算数组值的乘积(php5),array_map 返回经回调函数处理的数组(php4) array_walk( $d, function(&$v, $k, $n) {//用回调函数处理数组元素(php3)闭包写法(php5.3) $v = array_chunk( call_user_func_array('array_merge', array_pad([$v], $n/count($v), $v)), 1); }, $n);//array_chunk 切割数组(php4) //call_user_func_array 调用指定函数并传递参数数组(php4)对执行可变参数数量的函数很有用 foreach($d as $i=>$t) { if($i == 0) { $r = $t; }else { array_multisort(array_map(function($v) { return $v[0]; }, $r), $r); $r = array_map('array_merge', $r, $t); } }登录后复制------解决方案--------------------function my_arr_combine(){$args = func_get_args();$final = array_shift($args);while($f = array_shift($args)){$r = array();
09-15 01:41