프로그래밍 언어/PHP

PHP의 배열에서 요소 삭제

Rateye 2021. 8. 11. 10:28
728x90
반응형
질문 : 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
728x90
반응형