배열 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() - 배열의 모든 구성원에 사용자 제공 함수 적용