PHP에서는 순전히 기능적인 프로그래밍 언어는 아니지만 일부 내장 기능 도구를 통해 더 우아하고 간단하며 코드를 쉽게 작성할 수 있습니다. Array_Filter () 는 종종 간과되지만 매우 강력한 공구 기능입니다. 이 기사에서는 Array_Filter ()를 사용하여 PHP 코드 스타일을 개선하고 기능 프로그래밍에 더 가깝게 이동하는 방법을 소개합니다.
Array_Filter () 는 PHP의 내장 배열 처리 기능 중 하나이며 배열에서 요소를 필터링하는 데 사용됩니다. 배열의 각 요소에서 함수를 실행하는 콜백 함수를 허용하고 True 의 리턴 값을 가진 요소가 유지되고 다른 요소는 제거됩니다.
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
콜백 함수가 제공되지 않으면 배열에서 거짓 에 해당하는 값 (예 : 0 , '' , null , false 등).
여러 번 우리는 형식 또는 API에서 일부 데이터를 받게됩니다.이 데이터는 빈 문자열, null, false 등과 같은 잘못된 컨텐츠를 포함 할 수 있습니다 . array_filter ()를 사용하여 코드 줄을 정리하십시오.
$data = [
'username' => 'alice',
'email' => '',
'age' => null,
'subscribe' => false,
];
$cleaned = array_filter($data);
print_r($cleaned);
산출:
Array
(
[username] => alice
)
이것은 수동으로 정리를 위해 글을 쓰는 것보다 훨씬 우아합니다.
콜백 기능을 전달하여보다 유연한 조건 필터링을 구현할 수 있습니다. 예를 들어, 사용자 그룹에서 활성 사용자를 필터링합니다.
$users = [
['name' => 'Alice', 'active' => true],
['name' => 'Bob', 'active' => false],
['name' => 'Carol', 'active' => true],
];
$activeUsers = array_filter($users, function ($user) {
return $user['active'];
});
print_r($activeUsers);
출력에는 Alice와 Carol 만 포함됩니다.
많은 유효하지 않거나 임시 사용자가 포함 된 원격 API (예 : https://api.m66.net/users )에서 일련의 데이터를 받고 있다고 가정 해 봅시다.
$response = file_get_contents('https://api.m66.net/users');
$users = json_decode($response, true);
$validUsers = array_filter($users, function ($user) {
return isset($user['email']) && filter_var($user['email'], FILTER_VALIDATE_EMAIL);
});
보시다시피, Array_Filter ()는 코드를 "선언 프로그래밍"스타일에 더 가깝게 만들고 "루프 및 조건을 구현하는 방법"에 중점을 두지 않고 코드의 의도가 더 명확합니다.
Array_Map ( ) 및 array_reduce ()와 같은 기능적 메소드와 Array_Filter ()를 결합하여 거의 foreach가 없는 논리 코드를 작성할 수 있습니다. 예를 들어 활성 사용자의 사용자 이름을 필터링하고 추출합니다.
$usernames = array_map(
fn($user) => $user['name'],
array_filter($users, fn($user) => $user['active'])
);
명확한 의미론과 함께 간결하고 우아합니다.
Array_Filter () 는 가볍고 강력하며 사용하기 쉬운 기능입니다. 잘 사용되면 PHP를보다 기능적이고 읽기 쉽게 만들 수 있습니다. 전통적인 foreach 와 비교할 때, 그것은 한 줄의 코드로 의도를 명확하게 표현하고, 보일러 플레이트 코드를 줄이며, 유지 관리 가능성을 향상시킬 수 있습니다.
다음 프로젝트에서 Array_Filter ()를 사용하여 코드의 품질과 스타일을 개선하십시오!