PHP

[PHP] php 배열 중복값 제거 / 다차원 배열 중복값 제거 array_unique()

chsr 2021. 2. 2. 13:32
728x90
반응형

PHP 배열 중복값 제거 / 다차원 배열 중복값 제거 array_unique()


사용법

array_unique ( array $array , int $flags = SORT_STRING )

$array - 배열

$flags - 다음 값을 사용하여 정렬 동작을 수정하는 데 사용할 수 있음 (선택적 두 번째 매개 변수)

  • SORT_REGULAR -일반적인 항목 비교 (유형 변경 금지)
  • SORT_NUMERIC -항목을 숫자로 비교
  • SORT_STRING -항목을 문자열로 비교
  • SORT_LOCALE_STRING -현재 로케일에 따라 항목을 문자열로 비교합니다.

1차원 배열 중복값 제거 

$tmpArray = array( "apple", "banana", "tomato" , "strawberry" , "lemon", "apple", "banana" );
print_r($tmpArray);		
// Array ( [0] => apple [1] => banana [2] => tomato [3] => strawberry [4] => lemon [5] => apple [6] => banana )


$newArray = array_unique($tmpArray);
print_r($newArray);		
//	Array ( [0] => apple [1] => banana [2] => tomato [3] => strawberry [4] => lemon )

 

 

 다차원 배열 중복값 제거 

// 예제 배열
$tmpArray[] = array(
  "color" => "red"
  , "name" => "apple"
);

$tmpArray[] = array(
  "color" => "yellow"
  , "name" => "banana"
);

$tmpArray[] = array(
  "color" => "red"
  , "name" => "tomato"
);

$tmpArray[] = array(
  "color" => "red"
  , "name" => "apple"
);

echo "<xmp>";
print_r($tmpArray);
echo "</xmp><br>";

/*
  Array
  (
    [0] => Array
      (
        [color] => red
        [name] => apple
      )

    [1] => Array
      (
        [color] => yellow
        [name] => banana
      )

    [2] => Array
      (
        [color] => red
        [name] => tomato
      )

    [3] => Array
      (
        [color] => red
        [name] => apple
      )

  )
*/

 

# 해결법 1
$newArray = array_map("unserialize", array_unique(array_map("serialize", $tmpArray)));

# 해결법 2 (PHP 5.2.9 이상부터 사용 가능)
$newArray = array_unique($tmpArray, SORT_REGULAR);

 

// 해결법 1
$newArray = array_map("unserialize", array_unique(array_map("serialize", $tmpArray)));

// 해결법 2 (PHP 5.2.9 이상부터 사용 가능)
$newArray = array_unique($tmpArray, SORT_REGULAR);

echo "<xmp>";
print_r($newArray);
echo "</xmp><br>";

/*
  // color가 red고 name이 apple인 중복값이 삭제됨
  Array
  (
    [0] => Array
      (
        [color] => red
        [name] => apple
      )

    [1] => Array
      (
        [color] => yellow
        [name] => banana
      )

    [2] => Array
      (
        [color] => red
        [name] => tomato
      )
  )
*/
728x90
반응형