과거에는 배열에서 빈 값을 제거할 때 foreach 또는 while을 강제로 사용하여 배열의 빈 요소를 삭제했습니다.
<?php foreach( $arr as $k=>$v){ if( !$v ) unset( $arr[$k] ); } ?>
그리고 저는 기분은 별로지만 효율성은 높지 않습니다. 먼저 $arr를 개체로 변환한 다음 해당 개체의 특성을 사용하여 삭제합니다. . foreach가 실행될 때마다 변수가 복사됩니다. 페이지에 foreach가 너무 많으면 엄청난 소모가 발생합니다.
인터넷을 돌아다니던 중 누군가가 array_filter를 사용하자고 제안하는 것을 보고 깜짝 놀랐습니다. 설명서를 열어 살펴보니 보물산을 지키고 있었지만 사용법을 몰랐던 것입니다.
array_filter 함수의 기능은 콜백 함수를 사용하여 배열을 필터링하는 것입니다. 항상 콜백 함수를 사용하여 처리할 수 있다고 생각했지만 매뉴얼에 문장이 있는 것을 찾지 못했습니다. 콜백 함수가 없는 경우 기본값은 잘못된 프로젝트가 있는 배열을 삭제하는 것입니다.
코드는 다음과 같습니다.
<?php $entry = array( 0 => 'foo', 1 => false, 2 => -1, 3 => null, 4 => '' ); print_r(array_filter($entry)); ?>
출력 값은
Array ( [0] => foo [2] => -1 )
아직은 앞으로도 매뉴얼을 더 읽어봐야 할 것 같습니다... array_slice도 좋은 것처럼 말이죠. 안타깝게도 나는 이전에 그것을 눈치 채지 못했습니다.
첨부 파일: 또 다른 예
$strDelCodes = "A;B;;C;;C;D;;;D;D"; $rsArray = array_values(array_unique(array_diff (split (";", $strDelCodes), array (""))));
$rsArray 배열에 저장된 값은 다음과 같습니다. A B C D
array_values() 함수는 주어진 배열의 모든 키 값을 포함하는 배열을 반환하지만 키 이름은 유지되지 않습니다.
array_diff() 함수는 두 배열의 차이 배열을 반환합니다. 이 배열에는 비교되는 배열에 있지만 다른 인수 배열에는 없는 모든 키가 포함됩니다.
array_unique() 함수는 배열에서 중복된 값을 제거하고 결과 배열을 반환합니다. 여러 배열 요소의 값이 동일할 경우 첫 번째 요소만 유지되고 나머지 요소는 삭제됩니다.
반환된 배열의 키 이름은 변경되지 않습니다.
array_merge() 함수는 두 개 이상의 배열을 하나의 배열로 병합합니다.
중복된 키 이름이 있는 경우 해당 키의 키 값은 마지막 키 이름에 해당하는 값이 됩니다. (나중 키 이름이 이전 키 이름을 덮어씁니다.) 배열이 숫자로 인덱싱된 경우 키 이름은 연속적으로 다시 인덱싱됩니다.
위 내용은 PHP에서 null 값을 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!