1

配列を取り、そのすべての組み合わせを出力する以下の関数を作成しました。

$option = array("a","b","c");

function combinations($array, $number) {
    if ($number == 1) {
        foreach ($array as $k => $v1) {
            echo $v1 . "<br>";
        }
    } elseif ($number == 2) {
        foreach ($array as $k => $v1) {
            foreach ($array as $key => $v2) {
                echo $v1 . " - " . $v2 . "<br>";
            }

        }
    } elseif ($number == 3) {
        foreach ($array as $k => $v1) {
            foreach ($array as $key => $v2) {
                foreach ($array as $key => $v3) {
                    echo $v1 . " - " . $v2 . " - " . $v3 . "<br>";
                }
            }
        }
    }
}

combinations($option, 2);

出力は次のとおりです。

a - a
a - b
a - c
b - a
b - b
b - c
c - a
c - b
c - c

引数として数値を受け取り、組み合わせに対して 1、2、または 3 つのスロットを返します。ただし、その組み合わせにいくつのスロットがあるかは事前にわかりません。ほとんどの場合、1 から 3 の間である可能性がありますが、任意の数のスロットに対応できるようにこれを書き直す方法があることを望んでいました。

私はPHPが初めてなので、何か単純なものが欠けていると確信しています。誰かが私を正しい方向に向けることができれば、とても感謝しています。

アップデート:

これがphp string permutationの複製である理由がわかりません。私が彼らの質問を正しく理解できれば、彼らは 4 スロットの組み合わせを作ろうとしています。関数内の別の elseif ブロックでこれを実現できます。これを任意の数のスロットで機能させる方法を探しています。誤解していた場合は、お詫び申し上げます。

4

1 に答える 1