PHP에서는 foreach 반복문과 empty() 함수를 조합하면 배열에 포함된 빈 값(null, 빈 문자열, false 등)을 손쉽게 제거할 수 있습니다. 아래 예제 코드를 통해 그 방법을 살펴보겠습니다.
예제 코드
<?php
$my_array = array("This", 91, '', null, 102, "is", false, "a", "sample", null);
foreach($my_array as $key => $val)
if(empty($val))
unset($my_array[$key]);
echo "배열에서 빈 값을 제거한 후 남은 요소는 다음과 같습니다 -";
foreach($my_array as $key => $val)
echo ($my_array[$key] ."<br>");
?>
실행 결과
배열에서 빈 값을 제거한 후 남은 요소는 다음과 같습니다 -
This
91
102
is
a
sample
코드 설명
먼저 문자열, 숫자, 그리고 null 값이 혼합된 배열을 정의합니다. 이어서 foreach 반복문을 사용해 배열의 모든 요소를 하나씩 순회하면서, 각 값이 비어 있는지 empty() 함수로 검사합니다. 여기서 '빈 값'에는 null, 빈 문자열(''), false 등이 포함됩니다.
빈 값으로 판별되면 unset() 함수를 호출하여 해당 키의 요소를 배열에서 삭제합니다. 마지막으로 다시 한 번 foreach 반복문을 통해 배열을 출력하면, 빈 값이 모두 제거된 유효한 요소들만 화면에 표시됩니다.
참고 사항
unset()으로 요소를 제거하면 배열의 인덱스가 재정렬되지 않고 그대로 유지됩니다. 만약 인덱스를 연속적으로 다시 정렬하고 싶다면 array_values() 함수를 추가로 사용하면 됩니다. 또한 PHP 5.3 이상에서는 array_filter($my_array)를 활용해 콜백 함수 없이도 빈 요소를 한 줄로 제거할 수 있으니, 상황에 맞게 선택하여 사용하시기 바랍니다.