본문으로 바로가기

php 배열 (중복값 제거, 요소삭제)

category [ Web 관련 ]/php 2019. 12. 19. 16:00

중복값 제거

<?php
  $test = array("1", 2", "2", "3", "4", "4", "5", "5", "5");
  $test2 = array_unique($test);
?>

 

 

요소삭제

 

array_splice()

 

  • 배열을 잘라내는 기능을 이용하여 값을 삭제
  • 1개 값만 삭제하거나 연속하는 값을 삭제할 때 유용

 

$target = array('a', 'b', 'c');

//삭제실행
$split = array_splice($target, 1, 1);

//삭제결과
var_dump($target);/*array(2) { [0]=> string(1) "a" [1]=> string(1) "c" }*/

//인수로 전달한 값도 갱신되어 있다
var_dump($split);/*array(1) { [0]=> string(1) "b" }*/

 

unset()

array_values()

 

  • 배열을 지정하여 unset으로 삭제하는 방법
  • 복수의 값의 삭제에 유용
  • unset으로 삭제하는 것 만으로는 index가 갱신되지 않으므로 array_values로 index를 채움

 

$target = array('a', 'b', 'c');

//삭제실행
unset($target[1]);

//실행결과
//index의 1을 삭제했기 때문에 index 번호가 이어지지 않는다
var_dump($target);/*array(2) { [0]=> string(1) "a" [2]=> string(1) "c" }*/

//index 채우기
$target = array_values($target);

//index의 결번이 채워져 번호가 이어진다.
var_dump($target);/*array(2) { [0]=> string(1) "a" [1]=> string(1) "c" }*/

 

 

$target = array('a', 'b', 'c', 'd');

foreach ($target as $key => $val) {
  if(/*삭제조건*/){

      //삭제실행
      unset($target[$key]);
  }
}

//Index 채우기
array_values($target);

 

1개 삭제라면 array_splice();가 편리하다. 단, 복수 삭제의 경우는 array_splice();로 삭제하면 삭제와 인덱스를 채우기는 작업이 동시에 해줘야 하는 경우가 있다. unset();으로 한번에 삭제후 array_value();로 index를 전부 채우는 방법을 추천.

 

array_diff()

array_values()

  • index값이 아닌 요소를 지정하여 삭제
  • 삭제후에 index를 채우는 작업이 필요

array_diff는 제1 인수의 배열과 제2 인수 이후의 배열을 비교하여 제1인수의 요소 중 다른 배열에는 존재하지 않는 값만 반환한다

 

 

 

unset();

  • key를 이용하여 연상배열로부터 삭제

$target = array('key1' => 'a', 'key2' => 'b', 'key3' => 'c'); //삭제실행 unset($target['key2']); //삭제결과 var_dump($target);/*array(2) { ["key1"]=> string(1) "a" ["key3"]=> string(1) "c" }*/

 

 


출처: https://pikabu.tistory.com/86 [피카부]