피카부 RSS 태그 관리 글쓰기 방명록 다시 시작하는 개발 블로그
2017-06-22 11:53:48

Index를 지정하여 삭제하기 1

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

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" }*/

array_splice 사용예2(연속된 값의 삭제)

$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" }*/

Index를 지정하여 삭제하기 2

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

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" }*/

unset 사용예

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

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

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

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

유용한 Index 지정 삭제 패턴

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

요소를 지정하여 삭제하기

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

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

array_diff 사용예

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

//삭제실행
$result = array_diff($target, array('c', 'e'));
//index 채우기
$result = array_values($result);

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

연상배열

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

unset 사용예

$target = array('key1' => 'a', 'key2' => 'b', 'key3' => 'c');

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

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