데이터베이스 쿼리 결과를 처리 할 때는 종종 데이터의 필터링 또는 사전 필터링을 수행해야합니다. PHP는 매우 편리한 기능 array_filter를 제공하므로 데이터를 쿼리 한 후 추가 처리에 도움이됩니다. 이 기사에서는 데이터베이스 쿼리 결과를 처리하기 전에 Array_Filter를 사용하여 데이터 사전 필터를 수행하는 방법을 설명하여 특정 기준을 충족하는 데이터를 얻습니다.
먼저, array_filter 함수의 기본 사용법을 이해해 봅시다. Array_Filter 는 배열의 요소에 콜백 함수를 적용하여 지정된 조건에 따라 요구 사항을 충족하는 요소를 반환하는 내장 기능입니다. 기능의 프로토 타입은 다음과 같습니다.
array_filter(array $array, callable $callback = null, int $mode = 0): array
$ 배열 : 필터 배열.
$ 콜백 : 배열에서 각 요소를 테스트하는 콜백 함수. 콜백 함수가 true를 반환하면 요소가 유지되고 그렇지 않으면 삭제됩니다.
$ 모드 :이 매개 변수는 콜백 기능의 작동 방식을 결정합니다. 기본값은 0 이므로 콜백 함수의 리턴 값이 참인 요소가 유지됩니다.
콜백 함수가 전달되지 않으면 Array_Filter는 모든 요소가 False (예 : NULL , 0 , False 등)를 삭제합니다.
실제 개발에서 데이터베이스 쿼리 결과에는 종종 많은 레코드가 포함되어 있으며 특정 조건을 충족하는 데이터에만 관심이 있습니다. 이 경우, 데이터베이스 수준에서 중복 필터링을 피하기 위해 Array_Filter 기능을 통해 PHP에서 사전 필터링을 수행 할 수 있습니다.
데이터베이스에서 사용자 정보가 포함 된 배열을 받고 각 요소가 ID , 이름 및 연령 필드를 포함하는 연관 배열이라고 가정합니다. 이제 우리는 18 세 이상의 모든 사용자를 걸러 내고 싶습니다.
<?php
// 이것이 데이터베이스 쿼리에서 얻은 결과라고 가정합니다.
$users = [
['id' => 1, 'name' => 'Alice', 'age' => 20],
['id' => 2, 'name' => 'Bob', 'age' => 17],
['id' => 3, 'name' => 'Charlie', 'age' => 25],
['id' => 4, 'name' => 'David', 'age' => 16],
];
// 사용array_filter필터링을 수행하십시오
$adultUsers = array_filter($users, function($user) {
return $user['age'] > 18;
});
// 출력 필터 결과
print_r($adultUsers);
?>
이 예에서는 Array_Filter 기능과 콜백 기능을 통해 18 세 이상의 모든 사용자를 걸러냅니다. 이렇게하면 처리를 위해 필터 로직을 데이터베이스에 전달하는 대신 쿼리 결과를 PHP에서 사전 필터링 할 수 있습니다.
우리가 18 세 이상의 사용자를 필터링하고 싶을뿐만 아니라 이름이 "a"로 시작되기를 원한다고 가정 해 봅시다. 콜백 함수에 더 많은 조건을 추가하여이를 수행 할 수 있습니다.
<?php
// 사용array_filter여러 조건부 필터링을 수행하십시오
$filteredUsers = array_filter($users, function($user) {
return $user['age'] > 18 && strpos($user['name'], 'A') === 0;
});
// 출력 필터 결과
print_r($filteredUsers);
?>
이 예에서는 사용자 이름이 Strpos 기능을 통해 "A"문자로 시작하는지 여부를 확인하고 연령이 18 세 이상인 경우에만 사용자를 유지합니다. 이런 식으로, 우리는 스크리닝을 위해 여러 조건을 유연하게 결합 할 수 있습니다.
PHP에서 Array_Filter를 사용하면 필터링 데이터를 용이하게 할 수 있지만 데이터베이스 쿼리의 필터링 기능을 대체하기 위해 전적으로 의존해야한다는 의미는 아닙니다. 데이터베이스 쿼리는 가능한 한 효율적이어야합니다. 특히 많은 양의 데이터를 처리 할 때 전송 및 처리 부담을 줄이기 위해 가능한 한 많은 SQL 문을 통해 필터링해야합니다.
그러나 경우에 따라 PHP의 Array_Filter는 여전히 유용한 도구이며, 특히 데이터베이스 쿼리 결과가 반환 된 후 소규모 데이터 세트에 대한 빠른 사전 필터링에 유용한 도구입니다.
CURL을 통해 http://api.m66.net/user/list 에서 사용자 데이터를 받고 18 세 이상의 사용자를 필터링하기를 희망한다고 가정 해보십시오.