현재 위치: > 최신 기사 목록> array_filter ()가 값이 0 인 요소를 삭제하는 이유는 무엇입니까?

array_filter ()가 값이 0 인 요소를 삭제하는 이유는 무엇입니까?

M66 2025-06-05

PHP에서 array_filter () 함수는 배열에서 요소를 필터링하고 지정된 콜백 함수에 따라 요소를 유지할지 여부를 결정하는 데 사용됩니다. 콜백 함수가 지정되지 않으면 Array_Filter () 는 기본 콜백 함수를 사용하여 배열을 필터링하여 "false 값"으로 간주되는 요소를 삭제합니다. PHP의 "False 값"에는 다음이 포함됩니다 : False , Null , 0 , " (빈 문자열), Array () (빈 배열) 및 0.0이 포함됩니다.

따라서 PHP에서 Array_Filter ()를 사용하면 배열의 요소 값이 0 이면 잘못된 값으로 간주되며 삭제됩니다. 이 문제를 더 잘 이해하기 위해 구체적인 예제를 사용하여 Array_Filter () 의 동작을 보여줄 수 있습니다.

예 1 : Array_Filter () 기본 동작

 <?php
$array = [0, 1, 2, 3, 0, 4, 5, 0];

$filtered = array_filter($array);

print_r($filtered);
?>

산출:

 Array
(
    [1] => 1
    [2] => 2
    [3] => 3
    [5] => 4
    [6] => 5
)

위의 코드에서는 여러 개의 요소가 포함 된 여러 정수가 포함 된 배열을 만듭니다. Array_Filter ()를 사용하면 0 값이 0 인 모든 요소가 삭제됩니다. 0은 잘못된 값으로 간주됩니다.

왜 이런 일이 일어나고 있습니까?

array_filter () 함수의 기본 동작은 배열에서 "false 값"으로 간주되는 모든 요소를 ​​제거하는 것이기 때문입니다. PHP의 유형 변환 규칙은 0이 잘못된 값이라고 결정합니다. 구체적으로, 0은 false 로 변환되며, falsearray_filter ()를 원인으로 요소를 삭제합니다.

값이 0 인 요소를 유지하는 방법?

값이 0 인 요소를 유지하려면 사용자 정의 콜백 함수를 제공하여이를 수행 할 수 있습니다. 예를 들어:

 <?php
$array = [0, 1, 2, 3, 0, 4, 5, 0];

$filtered = array_filter($array, function($value) {
    return $value === 0 || $value > 0;
});

print_r($filtered);
?>

산출:

 Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [5] => 4
    [6] => 5
    [7] => 0
)

이 예에서는 값이 0 인 요소가 유지되는 반면 다른 요소는 논리에 따라 필터링되도록 사용자 정의 콜백 함수를 사용합니다.

요약

array_filter ()를 사용할 때는 0 값이 0 인 요소가 삭제되므로 PHP는 0을 잘못된 값으로 취급하므로 삭제됩니다. 콜백 함수가 없으면 Array_Filter ()는 이러한 오 탐지를 자동으로 삭제합니다. 0 또는 기타 특정 값을 유지 해야하는 경우 필터링 동작을 제어하기 위해 사용자 정의 콜백 기능을 제공 할 수 있습니다.