ホームページ  >  記事  >  バックエンド開発  >  PHP で 1D 配列から可能なすべての組み合わせを生成するにはどうすればよいですか?

PHP で 1D 配列から可能なすべての組み合わせを生成するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-30 16:38:02491ブラウズ

 How to Generate All Possible Combinations from a 1D Array in PHP?

PHP: 1D 配列のすべての可能な組み合わせの取得

はじめに

タスク1D 配列から要素の可能な組み合わせをすべて取得するという作業は、さまざまなプログラミング アプリケーションで遭遇する可能性があります。実行可能なすべての置換を導き出すには、反復的アプローチまたは再帰的アプローチを包括的に理解する必要があります。

反復的アプローチ

次のコードに示すように、1 つの方法には反復的アプローチの使用が含まれます。 :

<code class="php">function getCombinations($arr) {
    $result = array();
    $count = count($arr);
    for ($i = 0; $i < (1 << $count); $i++) {
        $combination = array();
        for ($j = 0; $j < $count; $j++) {
            if (($i & (1 << $j)) != 0) {
                $combination[] = $arr[$j];
            }
        }
        $result[] = $combination;
    }
    return $result;
}

$array = array('Alpha', 'Beta', 'Gamma');
$combinations = getCombinations($array);

print_r($combinations);

出力:

Array
(
    [0] => Array
        (
        )

    [1] => Array
        (
            [0] => Alpha
        )

    [2] => Array
        (
            [0] => Beta
        )

    [3] => Array
        (
            [0] => Alpha
            [1] => Beta
        )

    [4] => Array
        (
            [0] => Gamma
        )

    [5] => Array
        (
            [0] => Alpha
            [1] => Gamma
        )

    [6] => Array
        (
            [0] => Beta
            [1] => Gamma
        )

    [7] => Array
        (
            [0] => Alpha
            [1] => Beta
            [2] => Gamma
        )

)</code>

説明:

この反復ソリューションはビット操作を使用して、すべてのデータを生成します。可能な組み合わせ。 0 と (1

再帰的アプローチ

あるいは、再帰的アプローチこのアプローチを利用して同じ結果を達成することもできます:

<code class="php">function getCombinations($arr, $prefix = '') {
    $result = array();
    foreach ($arr as $element) {
        $result[] = $prefix . $element;
        $result = array_merge($result, getCombinations($arr, $prefix . $element . ' '));
    }
    return $result;
}

$array = array('Alpha', 'Beta', 'Gamma');
$combinations = getCombinations($array);

print_r($combinations);</code>

出力:

Array
(
    [0] => Alpha
    [1] => Alpha Beta
    [2] => Alpha Beta Gamma
    [3] => Alpha Gamma
    [4] => Alpha Gamma Beta
    [5] => Beta
    [6] => Beta Alpha
    [7] => Beta Alpha Gamma
    [8] => Beta Gamma
    [9] => Beta Gamma Alpha
    [10] => Gamma
    [11] => Gamma Alpha
    [12] => Gamma Alpha Beta
    [13] => Gamma Beta
    [14] => Gamma Beta Alpha
)

説明:

この再帰的ソリューションでは、プレフィックスに要素を連続的に追加し、配列内の残りの要素を再帰的に実行することにより、組み合わせを生成します。基本的なケースは、配列が空の場合に発生し、有効な組み合わせが得られます。その後、組み合わせは逆の順序で返されます。

反復または再帰的なアプローチを利用することで、開発者は 1D 配列から要素の可能なすべての組み合わせを効果的に取得し、さまざまなプログラミング シナリオの多様な要件に対応できます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。