質問

すべてのねえ、基本的に、私は配列を持っています:

array('a', 'b', 'c');

今私は、配列の置換関数を介して実行し、その結果は次のとおりです。

Array
(
    [0] => Array
        (
            [0] => C
        )

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

    [2] => Array
        (
            [0] => B
            [1] => C
        )

    [3] => Array
        (
            [0] => C
            [1] => B
        )

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

    [5] => Array
        (
            [0] => A
            [1] => C
        )

    [6] => Array
        (
            [0] => C
            [1] => A
        )

    [7] => Array
        (
            [0] => A
            [1] => B
        )

    [8] => Array
        (
            [0] => B
            [1] => A
        )

    [9] => Array
        (
            [0] => A
            [1] => B
            [2] => C
        )

    [10] => Array
        (
            [0] => A
            [1] => C
            [2] => B
        )

    [11] => Array
        (
            [0] => B
            [1] => A
            [2] => C
        )

    [12] => Array
        (
            [0] => B
            [1] => C
            [2] => A
        )

    [13] => Array
        (
            [0] => C
            [1] => A
            [2] => B
        )

    [14] => Array
        (
            [0] => C
            [1] => B
            [2] => A
        )

)

今、私の質問は、だから私はその配列をクリーンアップする方法、です

array ( C, B )
is the same as
array ( B, C )

、それが二番目の配列を除去する

私はそれを行うだろうか?

EDITは...あなたの回答に基づいていくつかの研究の後に、これは私が思い付いたものです。

array_walk($array, 'sort');
$array = array_unique($array);

sort($array); // not necessary
役に立ちましたか?

解決

ただ、ソートの構成アレイます:

foreach ($arrays AS &$arr)
{
   sort($arr);
}

そこで{ "C"、 "B"} => { "B"、 "C"}
なります そして{ "B"、 "C"}となる=> { "B"、 "C"}

と同一である。

他のヒント

array_multisort($array);
array_unique($array);

また、PEARパッケージを使用することができます Math_Combinatoricsするます。

require_once 'Combinatorics.php';
$combinatorics = new Math_Combinatorics;
$a = array('a', 'b', 'c');

// creating and storing the combinations
for($combinations = array(), $n=1; $n<=count($a); $n++) {
  $combinations = array_merge($combinations, $combinatorics->combinations($a, $n));
}

// test output
foreach($combinations as $c) {
  echo join(', ', $c), "\n";
}

プリント

a
b
c
a, b
a, c
b, c
a, b, c
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top