首頁 > 後端開發 > php教程 > 如何在保留鍵的同時計算 PHP 關聯數組的笛卡爾積?

如何在保留鍵的同時計算 PHP 關聯數組的笛卡爾積?

Barbara Streisand
發布: 2024-12-26 13:58:13
原創
618 人瀏覽過

How to Calculate the Cartesian Product of PHP Associative Arrays while Preserving Keys?

使用 PHP關聯數組尋找笛卡爾積


給定一個關聯數組,可以在保留其鍵的同時確定其笛卡爾積並在內部利用它們

方法論

我們可以用歸納法來解決這個問題:



  1. 對於單一數組,笛卡爾積是一系列具有表示原始數組中每個項目的單一鍵值對的數組。



  2. 假設前N-1 個陣列的乘積已知,加入第N個陣列涉及:



  3. 對於每個現有產品,附加一個包含第N 個陣列的鍵和第 N個陣列的第一個值的元素




重複這些步驟可確保獲得 N 個陣列的乘積。


實作


功能cartesian($input) {<pre class="brush:php;toolbar:false">$result = array();

foreach ($input as $key => $values) {
    if (empty($values)) {
        continue;
    }

    if (empty($result)) {
        foreach($values as $value) {
            $result[] = array($key => $value);
        }
    } else {
        $append = array();

        foreach($result as &amp;$product) {
            $product[$key] = array_shift($values);
            $copy = $product;

            foreach($values as $item) {
                $copy[$key] = $item;
                $append[] = $copy;
            }

            array_unshift($values, $product[$key]);
        }

        $result = array_merge($result, $append);
    }
}

return $result;
登入後複製

}


用法範例


$input = array(<pre class="brush:php;toolbar:false">'arm' => array('A', 'B', 'C'),
'gender' => array('Female', 'Male'),
'location' => array('Vancouver', 'Calgary'),
登入後複製

);

print_r(笛卡爾($input));



陣列<br>(<pre class="brush:php;toolbar:false">[0] => Array
    (
        [arm] => A
        [gender] => Female
        [location] => Vancouver
    )

[1] => Array
    (
        [arm] => A
        [gender] => Female
        [location] => Calgary
    )

[2] => Array
    (
        [arm] => A
        [gender] => Male
        [location] => Vancouver
    )
登入後複製

...等

以上是如何在保留鍵的同時計算 PHP 關聯數組的笛卡爾積?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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