我就随便问问数组的排列组合,比如$a = ['a'=>'a1','b'=>'b1',];$b= ['c'=>'c1','d'=>'d1',]结果:$c = [ [ 'a'=>'a1', 'c'=>'c1', ], [ 'a'=>'a1', 'd'=>'d1', ], [ 'b'=>'b1', 'c'=>'c1', ], [ 'b'=>'b1', 'd'=>'d1', ],]
1 回答
已采纳
qq_青枣工作室_0
TA贡献446条经验 获得超754个赞
这玩意,还真难搞。利用PHP的动态语言特性来做。
<?php function array_cartesian_assoc(){ $args = func_get_args(); if(2 > $count=func_num_args()) return $args; $ret=[]; $k=[]; $v=[]; $foreach = ''; for($i=0; $i<$count; $i++) $foreach.= "foreach(\$args[$i] as \$k[$i]=>\$v[$i])\n"; $foreach .= <<<'EOL' { $one = []; for($j=0; $j<$count; $j++) { $one[$k[$j]] = $v[$j]; } $ret[] = $one; } EOL; eval($foreach); return $ret; } // 测试 $a = ['a'=>'a1', 'b'=>'b1']; $b = ['c'=>'c1', 'd'=>'d1']; $c = array_cartesian_assoc($a, $b); var_export($c);
- 1 回答
- 0 关注
- 1518 浏览
添加回答
举报
0/150
提交
取消