PHP에서 array_filter () 함수는 주어진 콜백 함수에 따라 배열에서 요소를 필터링 할 수있는 매우 유용한 도구입니다. 개발 중에는 특히 배열에 불필요하거나 비준수 요소가있을 때 배열을 필터링해야합니다. Array_Filter () 는 효율적이고 유연한 기능이지만 여러 필터 조건을 처리하거나 필터링 결과를 최적화해야 할 때 성능 병목 현상을 가질 수 있습니다. 이 기사에서는 필터링 된 배열 차이를 처리하고 Array_Filter () 함수로 결과를 최적화하는 방법을 소개합니다.
먼저 Array_Filter () 함수의 기본 사용법을 검토해 봅시다. 지정된 조건에 따라 배열에서 각 요소를 테스트하는 배열 및 콜백 함수를 허용합니다. True를 반환하는 요소가 유지되고 거짓을 반환하는 요소가 필터링됩니다.
$array = [1, 2, 3, 4, 5, 6];
$filteredArray = array_filter($array, function($value) {
return $value % 2 === 0; // 균일 한 숫자
});
print_r($filteredArray);
출력 결과 :
Array
(
[1] => 2
[3] => 4
[5] => 6
)
이 예에서는 Array_Filter ()를 사용하여 배열에서 짝수를 걸러냅니다. 다음으로 복잡한 배열을 처리 할 때 효율성을 향상시키기 위해이 기능의 사용을 최적화하는 방법을 설명합니다.
Array_Filter ()를 사용하면 배열에서 일관성이없는 요소 유형이 발생하거나 배열의 키 이름이 누락 될 수 있습니다. 목표가 두 개의 필터링 된 배열을 비교하고 차이를 이해하는 것이라면 Array_Diff () 또는 Array_Diff_Assoc () 와의 배열 차이를 비교할 수 있습니다.
$array1 = [1, 2, 3, 4, 5];
$array2 = [2, 3, 6, 7];
// 필터 어레이
$filteredArray1 = array_filter($array1, function($value) {
return $value % 2 === 0; // 균일 한 숫자
});
$filteredArray2 = array_filter($array2, function($value) {
return $value % 2 === 0; // 균일 한 숫자
});
// 차이의 비교
$diff = array_diff($filteredArray1, $filteredArray2);
print_r($diff);
출력 결과 :
Array
(
[0] => 4
)
이 예에서는 배열에서 짝수를 걸러 내고 array_diff ()를 사용하여 Filterray2가 아닌 Filterray1 에 존재하는 요소를 찾습니다.
Array_Filter () 는 매우 유연한 기능이지만 경우에 따라 특히 큰 배열을 처리 할 때 성능 문제가 발생할 수 있습니다. 성능을 최적화하려면 다음 방법을 시도 할 수 있습니다.
필터링하기 전에 데이터를 전처리하고 불필요한 작업을 제거하십시오. 예를 들어, 배열의 일부 요소가 필터링되는 것을 알고 있다면 배열에서 이러한 요소를 미리 삭제하면 불필요한 필터링 작업을 저장할 수 있습니다.
array_filter () 의 콜백 함수는 호출 될 때마다 실행되므로 콜백 함수의 복잡성이 성능에 영향을 미칩니다. 콜백 함수에서 많은 양의 계산을 피하는 것과 같이 콜백 함수 내부의 논리를 최소화하십시오.
배열을 먼저 맵핑 해야하는 경우 (예 : 배열에서 일부 값을 변환) Array_Map () 와 함께 Array_Filter ()를 사용하여 필터링의 복잡성을 줄일 수 있습니다.
$array = [1, 2, 3, 4, 5, 6];
// 사용 array_map() 전처리를 수행하십시오
$mappedArray = array_map(function($value) {
return $value * 2; // 각 값을 곱합니다2
}, $array);
// 사용 array_filter() 필터링을 수행하십시오
$filteredArray = array_filter($mappedArray, function($value) {
return $value > 5; // 필터는보다 큽니다5가치
});
print_r($filteredArray);
출력 결과 :
Array
(
[2] => 6
[3] => 8
[4] => 10
)
이 메소드는 먼저 Array_Map () 로 배열을 변환 한 다음 array_filter () 로 결과를 필터링하여 불필요한 처리를 줄입니다.
일부 개발 프로세스 중에 URL의 도메인 이름을 교체 해야하는 시나리오가 발생할 수 있습니다. 배열에 URL이 포함 된 요소를 걸러 내고 도메인 이름을 균일하게 수정 해야하는 경우 str_replace ()를 사용하여 구현할 수 있습니다.
$urls = [
'http://example.com/page1',
'https://example.com/page2',
'http://example.com/page3'
];
// 도메인 이름을 대체하십시오 m66.net
$updatedUrls = array_map(function($url) {
return preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $url);
}, $urls);
print_r($updatedUrls);
출력 결과 :
Array
(
[0] => https://m66.net/page1
[1] => https://m66.net/page2
[2] => https://m66.net/page3
)
이 예에서는 preg_replace () 로 URL의 도메인 부분을 교체하고 example.com을 m66.net 으로 바꿉니다.
Array_Filter () 함수는 PHP에서 매우 강력하며 어레이에서 불필요한 요소를 필터링하는 데 도움이 될 수 있습니다. 필터링 된 배열 차이를 처리 할 때 Array_Diff () 와 Array_Diff_Assoc ()을 결합하면 두 배열의 차이를 쉽게 비교할 수 있습니다. 동시에 성능을 최적화하기 위해 콜백 함수의 복잡성을 줄이고 Array_Map () 과 같은 함수를 사용하여 협력하는 것을 고려할 수 있습니다. URL이 포함 된 배열을 처리 할 때는 URL의 통합 수정을 용이하게하기 위해 str_replace () 또는 preg_replace () 를 통해 도메인 이름을 빠르게 교체 할 수도 있습니다.