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

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

Barbara Streisand
發布: 2024-11-14 12:15:02
原創
939 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板