質問
すべてのねえ、基本的に、私は配列を持っています:
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
所属していません StackOverflow