>백엔드 개발 >PHP 문제 >PHP에서 삭제한 배열이 다음에 표시되지 않으면 어떻게 되나요?

PHP에서 삭제한 배열이 다음에 표시되지 않으면 어떻게 되나요?

PHPz
PHPz원래의
2023-04-23 10:07:23490검색

PHP에서 배열은 다양한 유형의 데이터를 저장할 수 있고 추가, 삭제, 수정 및 쿼리와 같은 기본 작업을 수행할 수 있는 매우 일반적인 데이터 유형입니다. 배열 요소를 삭제해야 할 경우 unset 함수를 사용하여 이를 달성할 수 있습니다. 그런데 삭제된 요소가 다음에 배열에 다시 나타나는 경우가 있습니다. 이유는 무엇입니까?

사실 PHP의 배열은 연관배열이기 때문에 각 요소마다 해당하는 키 값이 있고, unset 함수는 해당 값만 삭제하는데 키는 여전히 존재하므로 다음에 통과하면 이 키가 배열에 다시 표시되지만 해당 값은 비어 있습니다.

그렇다면 실제로 이 요소를 어떻게 삭제할 수 있을까요? array_values ​​함수를 사용하면 키가 0부터 시작하여 계속 증가하도록 배열 키의 순서를 재정렬할 수 있습니다. 이렇게 하면 이전에 삭제된 요소가 다시 나타나지 않습니다.

샘플 코드는 다음과 같습니다.

$arr = array('apple', 'banana', 'orange');
unset($arr[1]); // 删除元素
$newArr = array_values($arr); // 重新排列键
print_r($newArr);

출력 결과:

Array
(
    [0] => apple
    [1] => orange
)

위에 표시된 것처럼 array_values ​​​​함수를 사용하면 삭제된 요소가 다시 나타나지 않도록 키를 재배열할 수 있습니다.

array_values ​​함수는 요소 삭제 목적을 달성할 수 있지만 배열 키의 재배열을 유발하여 이전 코드 로직에 영향을 줄 수 있으므로 사용 시 주의 깊게 고려해야 합니다. .

또한 PHP 7 이상에서는 새로운 함수 array_filter를 사용하여 배열 요소를 삭제할 수 있습니다. 이 함수는 삭제된 요소가 표시되지 않는 새 배열을 반환합니다. 사용 예는 다음과 같습니다.

$arr = array('apple', '', 'banana', 'orange');
$newArr = array_filter($arr); // 过滤掉为空的元素
print_r($newArr);

출력 결과:

Array
(
    [0] => apple
    [2] => banana
    [3] => orange
)

원본 배열의 키 순서를 변경하지 않고 array_filter 함수를 통해 배열의 빈 요소를 필터링하므로 실용성이 있습니다.

간단히 말하면, PHP에서 배열 요소를 삭제하려면 unset 함수나 array_filter 함수를 사용하면 됩니다. 하지만 불필요한 문제를 피하기 위해 키 순서에 주의해야 합니다.

위 내용은 PHP에서 삭제한 배열이 다음에 표시되지 않으면 어떻게 되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.