문제

안녕하세요, 기본적으로 배열이 있습니다.

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
도움이 되었습니까?

해결책

단지 종류 구성 배열 :

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

{ "c", "b"}가 => { "b", "c"}가됩니다.
그리고 { "b", "c"}가 => { "b", "c"}가됩니다.

동일합니다.

다른 팁

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

배 패키지를 사용할 수도 있습니다 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