ホームページ > バックエンド開発 > PHPチュートリアル > PHP で複数の配列から項目のすべての組み合わせを生成するにはどうすればよいですか?

PHP で複数の配列から項目のすべての組み合わせを生成するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-14 13:46:12
オリジナル
723 人が閲覧しました

How Can I Generate All Combinations of Items from Multiple Arrays in PHP?

PHP で複数の配列内の項目のすべての組み合わせを生成する

複数の配列内の項目のすべての組み合わせを見つけるタスクは、プログラミングでよく遭遇します。 。配列と各配列内の要素の数は異なる場合があります。

再帰的解決策

再帰的アプローチは、この問題に効果的に対処できます。 combins() 関数は解決策を提供します:

function combinations($arrays, $i = 0) {
    if (!isset($arrays[$i])) {
        return array();
    }
    if ($i == count($arrays) - 1) {
        return $arrays[$i];
    }

    // get combinations from subsequent arrays
    $tmp = combinations($arrays, $i + 1);

    $result = array();

    // concat each array from tmp with each element from $arrays[$i]
    foreach ($arrays[$i] as $v) {
        foreach ($tmp as $t) {
            $result[] = is_array($t) ? array_merge(array($v), $t) : array($v, $t);
        }
    }

    return $result;
}
ログイン後にコピー

使用例

配列を検討します:

$arrayA = array('A1','A2','A3');
$arrayB = array('B1','B2','B3');
$arrayC = array('C1','C2');
ログイン後にコピー

すべてを検索するには組み合わせ:

print_r(combinations(array($arrayA, $arrayB, $arrayC)));
ログイン後にコピー

出力:

Array
(
    [0] => A1
    [1] => B1
    [2] => C1
    [3] => A1
    [4] => B1
    [5] => C2
    [6] => A1
    [7] => B2
    [8] => C1
    [9] => A1
    [10] => B2
    [11] => C2
    [12] => A1
    [13] => B3
    [14] => C1
    [15] => A1
    [16] => B3
    [17] => C2
    [18] => A2
    [19] => B1
    [20] => C1
    [21] => A2
    [22] => B1
    [23] => C2
    [24] => A2
    [25] => B2
    [26] => C1
    [27] => A2
    [28] => B2
    [29] => C2
    [30] => A2
    [31] => B3
    [32] => C1
    [33] => A2
    [34] => B3
    [35] => C2
    [36] => A3
    [37] => B1
    [38] => C1
    [39] => A3
    [40] => B1
    [41] => C2
    [42] => A3
    [43] => B2
    [44] => C1
    [45] => A3
    [46] => B2
    [47] => C2
    [48] => A3
    [49] => B3
    [50] => C1
    [51] => A3
    [52] => B3
    [53] => C2
)
ログイン後にコピー

このソリューションは、考えられるすべての組み合わせを効率的な方法で提供します。

以上がPHP で複数の配列から項目のすべての組み合わせを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート