首頁 >後端開發 >php教程 >如何在 PHP 中計算多個陣列的笛卡爾積?

如何在 PHP 中計算多個陣列的笛卡爾積?

Barbara Streisand
Barbara Streisand原創
2024-11-14 12:15:02934瀏覽

How to Calculate the Cartesian Product of Multiple Arrays in PHP?

多個數組的笛卡爾積:綜合解決方案

處理多個數組時,可能需要產生一個表,其中包含這些數組中所有可能的元素組合數組,同時避免重複。這種數學運算稱為笛卡爾積。

要在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn