在PHP 中計算多個陣列的笛卡爾積
問題:
給
給定多個PHP數組,我們如何產生一個笛卡爾積,將每個數組中所有可能的元素組合組合起來數組,排除重複?解:
要在 PHP 取得笛卡兒積,我們可以定義一個名為 array_cartesian 的遞歸函數。此函數採用輸入數組的數組作為參數。基本情況發生在數組數量為零時,在這種情況下,會傳回數組內的空數組。否則,函數使用 array_shift 函數從列表中刪除第一個數組,然後用剩餘的數組遞歸地呼叫自身。 對於第一個數組中的每個元素 v,函數迭代每個子數組p 是剩餘數組的笛卡爾積。然後,它透過合併 v 和 p 來建構一個新的子數組,並將該子數組加入到生成的笛卡爾積中。範例:
考慮下列集合陣列:$array[0][0] = 'apples'; $array[0][1] = 'pears'; $array[0][2] = 'oranges'; $array[1][0] = 'steve'; $array[1][1] = 'bob';
$cross = array_cartesian( array('apples', 'pears', 'oranges'), array('steve', 'bob') ); print_r($cross);
Array ( [0] => Array ( [0] => apples [1] => steve ) [1] => Array ( [0] => apples [1] => bob ) [2] => Array ( [0] => pears [1] => steve ) [3] => Array ( [0] => pears [1] => bob ) [4] => Array ( [0] => oranges [1] => steve ) [5] => Array ( [0] => oranges [1] => bob ) )
以上是如何在 PHP 中產生多個數組的笛卡爾積,同時消除重複?的詳細內容。更多資訊請關注PHP中文網其他相關文章!