1. 程式人生 > >PHP 實現笛卡爾積

PHP 實現笛卡爾積

<?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);
?>