PHP 實現笛卡爾積
阿新 • • 發佈:2019-01-11
<?php $arr = array(array(1,3,4,5),array(3,5,7,9),array(76,6,1,0)); /** ** 實現二維陣列的笛卡爾積組合 ** $arr 要進行笛卡爾積的二維陣列 ** $str 最終實現的笛卡爾積組合,可不寫 ** @return array **/ function cartesian($arr,$str = array()){ //去除第一個元素 $first = array_shift($arr); //判斷是否是第一次進行拼接 if(count($str) > 1) { foreach ($str as $k => $val) { foreach ($first as $key => $value) { //最終實現的格式 1,3,76 //可根據具體需求進行變更 $str2[] = $val.','.$value; } } }else{ foreach ($first as $key => $value) { //最終實現的格式 1,3,76 //可根據具體需求進行變更 $str2[] = $value; } } //遞迴進行拼接 if(count($arr) > 0){ $str2 = cartesian($arr,$str2); } //返回最終笛卡爾積 return $str2; } $cartesian_product = cartesian($arr); print_r($cartesian_product); ?>