현재 위치: > 최신 기사 목록> 콜백 함수를 전달하지 않으면 결과에 영향을 미치지 않습니다.

콜백 함수를 전달하지 않으면 결과에 영향을 미치지 않습니다.

M66 2025-06-04

PHP의 배열 처리 함수에서 Array_Filter () 는 매우 실용적인 도구이며, 그 목적은 배열에서 "기준을 충족시키지 않는"요소를 제거하는 것입니다. 그러나 초보자를 혼동 할 수있는 행동이 있습니다.

그런 다음 질문은 다음과 같습니다.

Array_Filter ()를 사용할 때 콜백 함수를 전달하지 않으면 결과에 영향을 미치지 않는다고 잘못 생각하십니까?

깊이로 분석합시다.

Array_Filter의 기본 동작

Array_Filter (array $ array,? callable $ callback = null, int $ mode = 0) : 배열 $ 콜백 의 두 번째 매개 변수는 선택 사항입니다.

콜백 함수를 제공하지 않으면 Array_Filter ()는 기본적으로 boolval ()을 기본적으로 사용하여 각 요소가 "true"인지 결정하고이를 기반으로 유지할지 여부를 결정합니다. 즉, 다음과 같은 모든 "falsey"요소를 제거합니다.

  • 거짓

  • 0 (정수 또는 문자열)

  • 빈 문자열 ""

  • 빈 배열 []

예 1 : 콜백 함수가 전달되지 않습니다

 $data = [0, 1, false, 2, '', 3, null];

$result = array_filter($data);

print_r($result);

출력 결과는 다음과 같습니다.

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

당신은 0 , false , ''null 이 모두 필터링된다는 것을 알게 될 것입니다.

예 2 : 콜백을 통과하지 않으면 처리하지 않을 것이라고 실수로 생각합니다.

많은 초보자는 다음과 같이 생각합니다.

"콜백 함수를 전달하지 않으면 아무것도하지 않고 원래 배열을 반환하는 것과 같습니다."

그러나 분명히 이것은 오해입니다. 실제로, 기본 동작 자체는 필터링 로직을 가지고 있으며 "부울 진실"을 기반으로합니다.

예 3 : 콜백 로직을 직접 정의하십시오

NULL 값 만 필터링하고 0 , False , Empty Strings 등을 유지하려면 콜백 함수를 명시 적으로 전달할 수 있습니다.

 $data = [0, 1, false, 2, '', 3, null];

$result = array_filter($data, function($item) {
    return $item !== null;
});

print_r($result);

출력 결과 :

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

현재 NULL 만 필터링되고 다른 "False 값"은 여전히 ​​유지됩니다.

요약

콜백 함수를 전달하지 않고 Array_Filter () 는 "처리되지 않는"것이 아니라 기본적으로 부울 의미에서 모든 "false 값"을 필터링합니다. 이것은 데이터를 청소할 때 유용하지만 쉽게 오해를 유발할 수 있습니다.

논리적 혼란을 피하기 위해 다음을 권장합니다.

  • 필터링하려는 특정 컨텐츠를 식별하십시오.

  • 사용자 정의 로직 요구 사항이있는 경우 항상 콜백 함수를 명시 적으로 전달하십시오.

  • 키 이름을 유지하는 데주의를 기울이십시오 (원래 배열의 키 이름은 기본적으로 유지됨).

추가 독서

실제 응용 프로그램 에서이 기능의 더 많은 예를 보려면 다음 페이지를 방문 할 수 있습니다 (샘플 주소 도메인 이름이 M66.net 으로 대체되었습니다).