處理多個數組時,可能需要產生一個表,其中包含這些數組中所有可能的元素組合數組,同時避免重複。這種數學運算稱為笛卡爾積。
要在 PHP 中解決這個挑戰,請考慮使用以下函數:
function array_cartesian() { $_ = func_get_args(); if(count($_) == 0) return array(array()); $a = array_shift($_); $c = call_user_func_array(__FUNCTION__, $_); $r = array(); foreach($a as $v) foreach($c as $p) $r[] = array_merge(array($v), $p); return $r; } $cross = array_cartesian( array('apples', 'pears', 'oranges'), array('steve', 'bob') ); print_r($cross);
此函數採用可變長度參數,每個參數代表一個陣列。它透過從第一個數組中選擇一個元素並將其與其餘數組的所有可能的笛卡爾積組合來遞歸計算笛卡爾積。
結果是一個巢狀數組,其中包含輸入數組中元素的每個唯一組合。在給定的範例中,兩個陣列的笛卡爾積將產生:
Array 0 Array 1 apples steve apples bob pears steve pears bob
此解決方案不僅對二維數組有效,而且還可以擴展以處理任意數量的數組。它提供了一種簡潔而優雅的方法來解決 PHP 中的笛卡爾積問題。
以上是如何在 PHP 中計算多個陣列的笛卡爾積?的詳細內容。更多資訊請關注PHP中文網其他相關文章!