배열 array_filter

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

array_filter — 콜백 함수를 사용하여 배열의 요소를 필터링합니다.


설명

array_filter(array $array, ?callable $callback = null, int $mode = 0): array

array의 각 값을 반복하여 callback 함수에 전달합니다. callback 함수가 true를 반환하면 array의 현재 값이 결과 배열로 반환됩니다.

배열 키는 보존되며 array이 인덱싱된 경우 공백이 발생할 수 있습니다. 결과 배열은 array_values() 함수를 사용하여 다시 인덱싱할 수 있습니다.


매개변수

array
반복할 배열
callback
사용할 콜백 함수

callback이 제공되지 않으면 array의 모든 빈 항목이 제거됩니다. 이 경우 PHP가 비어 있음을 정의하는 방법은 empty()를 참조하십시오.

mode
callback에 보낼 인수를 결정하는 플래그:
  • ARRAY_FILTER_USE_KEY - 값 대신 callback에 대한 유일한 인수로 키를 전달하십시오.
  • ARRAY_FILTER_USE_BOTH - 값 대신 callback에 대한 인수로 값과 키를 모두 전달합니다.

기본값은 0이며 대신 callback에 대한 유일한 인수로 값을 전달합니다.


반환 값

필터링된 배열을 반환합니다.


변경 로그

버전 설명
8.0.0 callback은 이제 nullable입니다.
8.0.0 callback에서 매개변수가 참조로 전달될 것으로 예상하는 경우 이 함수는 이제 E_WARNING을 내보냅니다.

Examples

예제 #1 array_filter() 예제

                  
<?php
function odd($var)
{
    // returns whether the input integer is odd
    return $var & 1;
}

function even($var)
{
    // returns whether the input integer is even
    return !($var & 1);
}

$array1 = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
$array2 = [6, 7, 8, 9, 10, 11, 12];

echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));
?>
                  
                

위의 예는 다음을 출력합니다.

Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)
                

예제 #2 callback 없는 array_filter()

                  
<?php

$entry = [
    0 => 'foo',
    1 => false,
    2 => -1,
    3 => null,
    4 => '',
    5 => '0',
    6 => 0,
];

print_r(array_filter($entry));
?>
                  
                

위의 예는 다음을 출력합니다.

Array
(
    [0] => foo
    [2] => -1
)
                

예제 #3 mode가 있는 array_filter()

                  
<?php

$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];

var_dump(array_filter($arr, function($k) {
    return $k == 'b';
}, ARRAY_FILTER_USE_KEY));

var_dump(array_filter($arr, function($v, $k) {
    return $k == 'b' || $v == 4;
}, ARRAY_FILTER_USE_BOTH));
?>
                  
                

위의 예는 다음을 출력합니다.

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}
                

메모

주의 콜백 함수에서 배열이 변경된 경우(예: 요소 추가, 삭제 또는 설정 해제) 이 함수의 동작은 정의되지 않습니다.


기타

  • array_intersect() - 배열의 교집합을 계산합니다.
  • array_map() - 주어진 배열의 요소에 콜백을 적용합니다.
  • array_reduce() - 콜백 함수를 사용하여 반복적으로 배열을 단일 값으로 줄입니다.
  • array_walk() - 배열의 모든 구성원에 사용자 제공 함수 적용