매일 PHP 개발에서 필터링 어레이는 매우 일반적인 작업입니다. 유효하지 않은 데이터를 정리하거나 특정 요소 제거 또는 비즈니스 로직 필터링을 수행하든 Array_Filter () 또는 Array_Diff () 와 같은 기능을 사용할 수 있습니다. 그것들 만 사용하는 것은 이미 강력하지만, 결합 될 때 더 복잡하고 유연한 배열 작업을 구현할 수 있습니다.
이 기사는 예제를 사용하여 Array_Diff () 와 Array_Filter ()를 결합하여 복잡한 배열 필터링 로직을 구현하는 방법을 설명합니다.
Array_Filter () 는 일반적으로 콜백 함수를 기반으로 기준을 충족하지 않는 배열의 값을 필터링하는 데 사용됩니다.
$numbers = [1, 2, 3, 4, 5];
$even = array_filter($numbers, function($n) {
return $n % 2 === 0;
});
// $even = [1 => 2, 3 => 4]
Array_Diff ()는 다른 배열에 있지 않은 배열의 모든 값을 반환하는 데 사용됩니다.
$all = ['apple', 'banana', 'cherry'];
$remove = ['banana'];
$result = array_diff($all, $remove);
// $result = [0 => 'apple', 2 => 'cherry']
배제하려는 일부 값 (예 : 블랙리스트, 기존 항목, 유효하지 않은 데이터 등)이 포함 된 여러 사용자 입력이 포함 된 다양한 데이터가 있다고 가정합니다. 당신은 희망 :
Array_Filter ()를 사용하여 유효하지 않거나 잘못 포맷 된 항목을 필터링합니다.
그런 다음 Array_Diff ()를 사용하여 블랙리스트에서 해당 값을 제거하십시오.
마지막으로, 추가 처리에 사용할 수있는 깨끗한 배열.
사용자 제출 URL 배치를 수집한다고 가정 해 봅시다.
널 값 또는 잘못된 형식을 제거하십시오.
블랙리스트에서 제외 된 도메인 이름.
$userUrls = [
'https://m66.net/article/123',
'http://example.com/test',
'',
'not_a_url',
'https://m66.net/login',
'https://blacklist.com/malicious',
];
$blacklistedDomains = ['blacklist.com'];
// 첫 번째 단계:사용 array_filter() 잘못된 클리어런스 URL
$validUrls = array_filter($userUrls, function($url) {
return filter_var($url, FILTER_VALIDATE_URL);
});
// 2 단계:추출은 합법적입니다 URL 도메인 이름,블랙리스트 도메인 이름을 필터링하십시오
$filteredUrls = array_filter($validUrls, function($url) use ($blacklistedDomains) {
$host = parse_url($url, PHP_URL_HOST);
return !in_array($host, $blacklistedDomains);
});
// $filteredUrls 이제 합법적이고 블랙리스트가 포함되어 있지 않습니다 URL
print_r($filteredUrls);
Array
(
[0] => https://m66.net/article/123
[1] => http://example.com/test
[4] => https://m66.net/login
)
실제로 여기에서 Array_Filter ()를 두 번 사용했으며 아래와 같이 도메인 이름 목록 간의 차이점을 처리하기 위해 필요한 경우 Array_Diff () 도 소개 할 수도 있습니다.
먼저 URL에서 모든 도메인 이름을 추출한 다음 Array_Diff ()를 사용하여 블랙리스트 도메인 이름을 제외 할 수 있습니다.
$domains = array_map(function($url) {
return parse_url($url, PHP_URL_HOST);
}, $validUrls);
$allowedDomains = array_diff($domains, $blacklistedDomains);
// 다시 필터 URL,소지품 만 유지합니다 allowedDomains ~의
$finalUrls = array_filter($validUrls, function($url) use ($allowedDomains) {
$host = parse_url($url, PHP_URL_HOST);
return in_array($host, $allowedDomains);
});
print_r($finalUrls);
Array_Filter () 및 Array_Diff ()를 결합하여 다양한 복잡한 배열 필터링 로직을 매우 유연하게 처리 할 수 있습니다. 실제 개발 :
Array_Filter ()는 조건에 따라 배열 요소를 하나씩 점검하는 데 더 적합합니다.
Array_diff () 는 알려진 유효하지 않은 항목 또는 블랙리스트를 제외하는 데 더 적합합니다.
이 둘을 결합하면 요소 컨텐츠를 확인할뿐만 아니라 설정 필터링도 실현할 수 있습니다.
Flexible Mastering 이러한 기능의 조합은 PHP에서 데이터 배열의 효율성 및 코드 가독성을 크게 향상시킵니다.