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

PHP 함수

array_filter

요약

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

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

파라미터

  • $array
    반복할 배열입니다.

  • $callback
    사용할 콜백함수입니다.

  • $mode
    콜백 함수에 전달할 인수입니다.

  • ARRAY_FILTER_USE_KEY 일 경우 값 없이 키만 전달됩니다.

  • ARRAY_FILTER_USE_BOTH일 경우 키와 값이 전달됩니다.

  • 아무것도 전달하지 않거나 0을 전달하면 값만 전달됩니다.

설명

PHP 4.0.6 버전부터 제공됩니다.

배열의 각 값을 반복하여 콜백 함수에 전달합니다.

콜백 함수가 true를 반환하면 배열의 현재 값이 결과 배열로 반환됩니다.

배열 키는 유지되며 배열이 인덱싱된 경우 키는 재정렬되지 않습니다.

결과 배열은 array_values​​() 함수를 사용하여 다시 인덱싱 할 수 있습니다.

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

PHP 8.0 버전부터 $callbacknull일 수 있습니다.

PHP 5.6 버전부터 $mode 상수에 ARRAY_FILTER_USE_KEYARRAY_FILTER_USE_BOTH 가 추가되었습니다.

콜백 함수에서 원본 배열이 변경된 경우 (예 : 요소 추가, 삭제 또는 설정 해제)이 함수의 동작은 보장할 수 없습니다.

예제 1

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"));

결과 1

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

예제 2

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

print_r(array_filter($entry));

결과 2

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

예제 3

$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));

결과 3

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

참고

https://phpman.ml/array_filter
https://www.php.net/manual/en/function.array-filter.php

파이썬 코드

def array_filter(array, callback=None):
    filter(callback, array)

관련 함수

array_map
array_reduce
array_walk


개발 의뢰를 요청하시려면 먼저 FAQ를 읽어보시고, 적합하다고 판단하시면 [email protected]로 연락해 주세요.

좋은 웹페이지 즐겨찾기