질문 : PHP의 배열에서 요소 삭제
foreach ($array)
가 더 이상 해당 요소를 포함하지 않도록 PHP를 사용하여 배열에서 요소를 삭제하는 쉬운 방법이 있습니까?
null
설정하면 할 것이라고 생각했지만 분명히 작동하지 않습니다.
답변
배열 요소를 삭제하는 방법에는 여러 가지가 있으며, 일부는 다른 작업보다 특정 작업에 더 유용합니다.
하나의 배열 요소 만 삭제하려면 unset()
또는 \array_splice()
사용할 수 있습니다.
값을 알고 있고 요소를 삭제할 키를 모르는 경우 \array_search()
를 사용하여 키를 가져올 수 있습니다. \array_search
는 첫 번째 히트 만 반환하므로 요소가 두 번 이상 발생하지 않는 경우에만 작동합니다.
unset()
을 사용하면 배열 키가 변경되지 않습니다. 키를 다시 색인화하려면 unset()
뒤에 \array_values()
사용할 수 있습니다. 그러면 모든 키가 0부터 시작하는 숫자로 열거 된 키로 변환됩니다.
암호:
$array = [0 => "a", 1 => "b", 2 => "c"];
unset($array[1]);
// ↑ Key which you want to delete
산출:
[
[0] => a
[2] => c
]
\array_splice()
를 사용하면 키가 자동으로 다시 색인화되지만 연관 키는 변경되지 않습니다. 모든 키를 숫자 키로 변환하는 \array_values()
\array_splice()
는 두 번째 매개 변수로 key가 아닌 offset을 필요로합니다.
암호:
$array = [0 => "a", 1 => "b", 2 => "c"];
\array_splice($array, 1, 1);
// ↑ Offset which you want to delete
산출:
[
[0] => a
[1] => c
]
unset()
과 동일한 array_splice()
는 참조로 배열을 취합니다. 이러한 함수의 반환 값을 배열에 다시 할당하지 않습니다.
여러 배열 요소를 삭제하고 unset()
또는 \array_splice()
여러 번 호출하지 않으려면 값 또는 키를 알고 있는지 여부에 따라 \array_diff()
또는 \array_diff_key()
함수를 사용할 수 있습니다. 삭제할 요소.
삭제할 배열 요소의 값을 알고 있다면 \array_diff()
사용할 수 있습니다. unset()
이전과 마찬가지로 배열의 키를 변경하지 않습니다.
암호:
$array = [0 => "a", 1 => "b", 2 => "c", 3 => "c"];
$array = \array_diff($array, ["a", "c"]);
// └────────┘
// Array values which you want to delete
산출:
[
[1] => b
]
삭제하려는 요소의 키를 알고 있다면 \array_diff_key()
를 사용하고 싶습니다. 값이 아닌 두 번째 매개 변수의 키로 키를 전달해야합니다. 키는 다시 색인화되지 않습니다.
암호:
$array = [0 => "a", 1 => "b", 2 => "c"];
$array = \array_diff_key($array, [0 => "xy", "2" => "xy"]);
// ↑ ↑
// Array keys which you want to delete
산출:
[
[1] => b
]
unset()
또는 \array_splice()
를 사용하여 동일한 값을 가진 여러 요소를 삭제하려면 \array_keys()
를 사용하여 특정 값에 대한 모든 키를 가져온 다음 모든 요소를 삭제할 수 있습니다.
출처 : https://stackoverflow.com/questions/369602/deleting-an-element-from-an-array-in-php
'프로그래밍 언어 > PHP' 카테고리의 다른 글
value 로 PHP 배열 삭제 (key 아님) (0) | 2021.08.12 |
---|---|
PHP 구문 분석 / 구문 오류; 그리고 그것들을 해결하는 방법 (0) | 2021.08.11 |
PHP에서 thread safe 또는 on-thread safe (0) | 2021.08.10 |
PHP의 모든 위치에 배열에 새 항목 삽입 (0) | 2021.08.09 |
PHP의 startsWith () 및 endsWith () 함수 (0) | 2021.08.09 |