ホームページ > バックエンド開発 > 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 連想配列を使用したデカルト積の検索


連想配列が与えられた場合、キーを保持しながらデカルト積を決定することが可能そしてそれらを内側で活用するarrays.

方法論


帰納法によってこの問題にアプローチできます:



  1. 単一の配列の場合、デカルト積は、元の配列の各項目を表す単一のキーと値のペアを持つ一連の配列です。



  2. 積を仮定します最初の N-1 個の配列がわかっているので、N 番目の配列を追加します



  3. 既存の製品ごとに、N 番目の配列のキーと N 番目の配列の最初の値を含む要素を追加します。 array.




これらの手順を繰り返すと、N 個の配列の積が次のようになります。


実装


function cartesian($input) {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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(<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">'arm' => array('A', 'B', 'C'),
'gender' => array('Female', 'Male'),
'location' => array('Vancouver', 'Calgary'),
ログイン後にコピー

);

print_r(cartesian($input));


配列<br>(</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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
    )
ログイン後にコピー

...etc.

以上がキーを保持しながらPHP連想配列のデカルト積を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
前の記事:日の設定Laravel 次の記事:PHP 入力検証で「isset()」と「!empty()」の両方を使用するのは冗長ですか?
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート