我就随便问问数组的排列组合,比如$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 关注
- 1588 浏览
添加回答
举报
0/150
提交
取消
