为了账号安全,请及时绑定邮箱和手机立即绑定

php数组排列组合

php数组排列组合

PHP
帅得一比 2016-12-05 11:13:10
我就随便问问数组的排列组合,比如$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);


查看完整回答
2 反对 回复 2016-12-05
  • 1 回答
  • 0 关注
  • 1518 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信