PHP数组笛卡尔积组合排列
/*方法一*/ function descartes() { $t = func_get_args(); if (func_num_args() == 1) { return call_user_func_array(__FUNCTION__, $t[0]); } $a = array_shift($t); if (!is_array($a)) { $a = array($a); } $a = array_chunk($a, 1); do { $r = array(); $b = array_shift($t); if (!is_array($b)) { $b = array($b); } foreach ($a as $p) { foreach (array_chunk($b, 1) as $q) { $r[] = array_merge($p, $q); } } $a = $r; } while ($t); return $r; } $arr = [ ['aaa','bbb','ccc'], ['111','222'], ]; $tmp = descartes($arr); print_r($tmp);
/*方法二*/ function descartes($arr1, $arr2) { $a = array_shift($arr1); if (!is_array($a)) { $a = array($a); } $a = array_chunk($a, 1); do { $r = array(); $b = array_shift($arr2); if (!is_array($b)) { $b = array($b); } foreach ($a as $p) { foreach (array_chunk($b, 1) as $q) { $r[] = array_merge($p, $q); } } $a = $r; } while ($t); return $r; } $arr1 = [ ['aaa','bbb','ccc'], ]; $arr2 = [ ['111','222'], ]; $tmp = descartes($arr1, $arr2); print_r($tmp);SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

更多精彩