2009-12-07 12 views
0

모든 이봐, 기본적으로, 배열이 : 이제PHP 정리 순열 배열

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) 

을하고 두 번째 배열을 제거

어떻게하면됩니까?

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

sort($array); // not necessary 
+1

왜 그냥 조합 기능 순열의 기능을 대체 할 수 없다? – philfreo

+0

왜냐하면 알고리즘은 나를 혼란시키기 때문에 순열 함수를 작성하지 않았기 때문입니다 : P – Ozzy

답변

3

그냥 sort 구성 배열 :

편집은 ... 당신의 응답에 따라 몇 가지 조사 후, 이것이 내가 생각 해낸 것입니다

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

그래서 { "C"를, "B"} => { "B", "C"}
및 { "B", "C"}는 각각> = "{"B ","C "}가됩니다.

이 동일합니다.

+1

배열을 정렬 한 후에 array_unique()를 사용하여 중복을 제거해야합니다. http://us.php.net/manual/en/function.array-unique.php –

+0

감사합니다 덕과 롭, 당신이 모두 완벽하게 일한 결합 : – Ozzy

+0

고마워, 나는 대답을 추천 해. 그것은 훨씬 깨끗합니다. –

3
array_multisort($array); 
array_unique($array); 
+0

는 멀티 포트, +1에 대해 몰랐습니다. –

+0

지금 확인하십시오. :) – hsz

1

배 패키지 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