array_filter()
함수
array_filter()
함수는
배열의 요소를 순회하면서 콜백 함수를 사용하여 원하는 조건에 따라 필터링하는 함수입니다.
필터링된 배열을 반환합니다. 이때 필터링된 요소는 필터링되기 이전의 배열 키(인덱스)를 유지합니다.
array_filter()
함수의 형식은 다음과 같습니다.
구문
매개변수
$array |
필수. 필터링할 배열입니다. |
---|---|
$callback |
옵션. 배열의 각 요소를 처리하는 콜백 함수입니다. 콜백 함수는 배열의 요소를 전달 인자로 받고, 결과로 true 또는 false 를 반환합니다. true 를 반환하면 해당 요소가 필터링된 배열에 포함되고, false 를 반환하면 해당 요소가 필터링된 배열에 포함되지 않습니다. 콜백 함수를 제공하지 않으면 배열의 모든 빈 항목이 제거됩니다. PHP 8.0.0 버전부터는 콜백 함수를 제공하지 않으면 E_WARNING 경고가 발생합니다. |
$mode |
옵션. 조건 함수 호출 시 전달할 플래그로, ARRAY_FILTER_USE_KEY 또는 ARRAY_FILTER_USE_BOTH 상수 중 하나를 사용할 수 있습니다. ARRAY_FILTER_USE_KEY 를 사용하면 콜백 함수에는 배열의 키(key)만 전달됩니다. 이는 연관 배열에서 키(key)를 기반으로 필터링 작업을 수행하려는 경우에 유용합니다. ARRAY_FILTER_USE_BOTH 를 사용하면 콜백 함수에는 배열의 값(value)과 키(key) 모두 전달됩니다. 이를 통해 값과 키를 모두 활용하여 필터링 작업을 수행할 수 있습니다. 기본값은 0으로, 값(value)만 콜백 함수에 전달됩니다. |
반환 값
필터링된 배열입니다. 이때 필터링된 요소는 필터링되기 이전의 배열 키(인덱스)를 유지합니다.
콜백 함수의 작동 원리
array_filter()
함수는 주어진 배열의 요소를 개발자가 직접 작성한 콜백 함수를 사용하여 원하는 조건에 따라 필터링하고,
조건을 충족하는 요소만으로 이루어진 필터링된 배열로 반환하는 함수입니다.
array_filter()
함수의 콜백 함수는 배열을 필터링하는 데 사용됩니다. 이 콜백 함수는 주어진 배열의 각 요소에 대해 호출되며, 그 결과에 따라 요소가 필터링되거나 필터링되지 않습니다. 다음은 array_filter()
함수의 콜백 함수가 호출되는 과정을 진행 순서대로 설명한 것입니다.
array_filter()
함수의 작동 순서입니다.
array_filter()
함수를 호출할 때, 첫 번째 매개변수로 필터링할 배열을 전달합니다.- 두 번째 매개변수로 콜백 함수를 전달합니다. 이 콜백 함수는 배열의 각 요소에 대해 호출됩니다.
array_filter()
함수는 필터링할 배열의 첫 번째 요소를 선택하고, 이 요소를 콜백 함수의 매개변수($element
)로 전달합니다.- 콜백 함수가 호출되고, 전달된 요소는 콜백 함수 내에서 사용할 수 있습니다. 이 콜백 함수 내에서 필요한 조건을 적용하고,
return
키워드를 사용하여 해당 요소가 필터링 조건을 충족하는지 여부를 판단합니다. - 콜백 함수가
true
를 반환하면, 현재 요소는 필터링된 배열에 포함됩니다.false
를 반환하면 현재 요소는 필터링된 배열에 포함되지 않습니다. array_filter()
함수는 다음 배열 요소를 선택하고 이와 같은 과정을 반복합니다.- 모든 배열 요소에 대한 콜백 함수 호출이 완료되면,
array_filter()
함수는 필터링된 결과를 포함하는 새로운 배열을 반환합니다. - 반환된 배열에는 콜백 함수에서
true
를 반환한 요소들만 포함됩니다.
이러한 방식으로 array_filter()
함수의 콜백 함수는 주어진 배열을 필터링하고 필터링된 결과를 반환합니다. 콜백 함수는 개발자가 정의한 조건을 기반으로 필터링을 수행하므로, 다양한 필터링 작업을 수행할 수 있습니다.
주의할 점
원본 배열의 인덱스 유지
array_filter()
함수는 필터링된 결과를 새로운 배열로 반환하면서 원본 배열의 인덱스를 그대로 유지합니다.
따라서, 필터링된 배열의 키(인덱스)는 원본 배열과 동일하게 됩니다.
아래의 예제 코드는 1부터 10까지의 숫자로 구성된 배열을 array_filter()
함수로 짝수만 필터링하는 예제입니다.
이 코드에서 주의해야 할 점은, 필터링된 배열인 $even_numbers
는 원본 배열 $array
에서 짝수만 필터링하여 생성되지만, 첫 번째 요소에 0부터 시작하는 키(인덱스)를 가진 요소가 없습니다. 필터링된 배열의 키(인덱스)는 원본 배열과 동일하기 때문입니다. 따라서, $even_numbers[0]
으로 첫 번째 요소에 접근하면 예상과 다른 결과가 발생합니다, 이 경우에는 null
이 됩니다.
콜백 함수를 제공하지 않았을 경우
PHP 8.0.0 버전부터는 array_filter()
함수에 두 번째 매개변수인 콜백 함수를 제공하지 않으면 E_WARNING 경고가 발생합니다.
다양한 활용 사례
array_filter()
함수는 다양한 배열 필터링 작업에 사용될 수 있으며, 다음은 그 중 일부 예제입니다.
특정 값으로 시작하는 요소만 필터링
array_filter()
함수를 사용하면 특정 값으로 시작하는 요소만 필터링할 수 있습니다.
다음은 "a"로 시작하는 문자열만으로 구성된 새로운 배열을 만드는 예입니다.
빈 값 제거
열의 빈 값을 제거할 때 array_filter()
함수와 empty()
함수를 함께 사용하는 것은 매우 효과적입니다. 이를 통해 배열을 정리하고 빈 값을 간단하게 제거할 수 있습니다. 아래의 예제를 통해 설명해보겠습니다.
연관 배열에서 특정 조건 충족하는 항목 필터링
array_filter()
함수로 연관 배열의 값을 기준으로 필터링하는 예제입니다.
array_filter()
함수는 주로 값을 기준으로 필터링하는 데에 사용됩니다. 키와 값을 모두 고려해야 하는 경우에는 다른 방법이 더 적합할 수 있습니다.
같이 보기
- PHP isset() 함수와 empty() 함수 – 개념 정리 및 사용법과 차이점
- PHP array_map() 함수 – 개념 정리 및 사용 예제
- PHP foreach() 반복문 사용법 및 활용 예제
- PHP array_reduce() 함수 – 개념 정리 및 사용 예제
- PHP array_search() 함수 – 개념 정리 및 사용 예제
- PHP array_keys() 함수 – 배열 키 목록 가져오기
- PHP 배열 값이 있는지 확인하는 in_array() 함수
- PHP array_values() 함수 – 배열 값 목록 가져오기
- PHP array_slice() 함수 - 개념 정리 및 사용 예제
- PHP array_diff() 함수 - 다른 배열에 없는 값 찾기
- PHP array_diff_assoc() 함수 - 키를 기준으로 다른 배열에 없는 값 찾기
- PHP array_intersect() 함수 - 다른 배열과의 공통 값 찾기
- PHP array_intersect_assoc() 함수 - 키와 값을 기준으로 다른 배열과의 공통 요소 찾기
- 자바스크립트 filter() 함수 – 개념 정리 및 사용 예제