PHP에서 array_filter () 함수는 콜백 함수에 의해 배열의 요소를 필터링하는 데 사용됩니다. 이것은 주어진 규칙을 통해 배열을 필터링하여 규칙과 일치하는 요소를 남깁니다. 일부 시나리오에서는 다른 요구에 따라 필터링 조건을 유연하게 조정해야 할 수도 있으므로 다른 시나리오에서 재사용 및 조정될 수 있도록 필터링 규칙을 매개 변수화하는 것이 매우 중요합니다.
먼저 Array_Filter () 의 기본 사용법을 검토해 봅시다. 간단한 배열이 있고 숫자를 균일하게 걸러 내고 싶다고 가정 해 봅시다.
<?php
$array = [1, 2, 3, 4, 5, 6];
$filtered = array_filter($array, function($item) {
return $item % 2 !== 0; // 홀수 만 유지됩니다
});
print_r($filtered);
?>
실행 결과 :
Array
(
[0] => 1
[2] => 3
[4] => 5
)
이 예에서는 콜백 함수를 통해 필터링 규칙을 정의합니다. 홀수 만 유지됩니다. 그러나 실제 응용 프로그램에는 여러 가지 다른 필터링 규칙이있을 수 있으며 매번 새로운 콜백 기능을 작성하는 대신 필터링 규칙을 유연하게 선택할 수 있기를 원합니다.
필터링 규칙을보다 유연하게 만들기 위해 필터링 규칙을 매개 변수화하여 다른 시나리오의 요구에 따라 다른 필터 조건을 선택할 수 있도록 필터링 규칙을 매개 변수화 할 수 있습니다. 구현의 핵심은 필터링 규칙을 array_filter () 로 매개 변수로 전달하는 것입니다.
다른 시나리오에서 다른 규칙이 호출되도록 필터링 규칙을 함수 또는 클래스로 캡슐화 할 수 있습니다.
<?php
function filterArray(array $array, callable $filterFunction): array {
return array_filter($array, $filterFunction);
}
// 다른 필터링 규칙을 정의하십시오
$isOdd = function($item) {
return $item % 2 !== 0; // 홀수 만 유지됩니다
};
$isEven = function($item) {
return $item % 2 === 0; // 숫자 만 유지됩니다
};
$array = [1, 2, 3, 4, 5, 6];
// 다른 필터링 규칙을 사용하십시오
$filteredOdd = filterArray($array, $isOdd);
$filteredEven = filterArray($array, $isEven);
print_r($filteredOdd); // 홀수 만 유지됩니다
print_r($filteredEven); // 숫자 만 유지됩니다
?>
출력 결과 :
Array
(
[0] => 1
[2] => 3
[4] => 5
)
Array
(
[1] => 2
[3] => 4
[5] => 6
)
위의 예에서는 기능 매개 변수를 통해 필터링 규칙을 FilterArray () 로 전달하여 다른 시나리오에서 다른 규칙을 유연하게 선택할 수 있도록합니다. 이 방법은 코드를보다 간결하고 재사용 할 수있게합니다.
때로는 외부 입력 (예 : 사용자 설정, 구성 파일 등)을 통해 필터링 규칙을 동적으로 결정할 수도 있습니다. 이 경우 전달 된 매개 변수에 따라 해당 필터링 규칙을 생성 할 수 있습니다.
<?php
function generateFilterRule(string $type): callable {
if ($type === 'odd') {
return function($item) {
return $item % 2 !== 0; // 홀수 만 유지됩니다
};
} elseif ($type === 'even') {
return function($item) {
return $item % 2 === 0; // 숫자 만 유지됩니다
};
} else {
return function($item) {
return true; // 필터링이 없습니다
};
}
}
$array = [1, 2, 3, 4, 5, 6];
$filterRule = generateFilterRule('odd'); // 홀수 규칙을 선택하십시오
$filtered = array_filter($array, $filterRule);
print_r($filtered);
?>
출력 결과 :
Array
(
[0] => 1
[2] => 3
[4] => 5
)
이 예에서 GenerateFilterrule () 함수는 전달 된 문자열을 기반으로 필터링 규칙을 결정하여 필터링 조건을보다 유연하게 만듭니다.
실제 개발에서 필터링 규칙은 때때로 외부 데이터 소스 (예 : 데이터베이스 쿼리 결과, API 반환 값 등)에 의존합니다. 이 경우 외부 데이터 소스를 필터링 규칙에 통합 할 수 있습니다. 예를 들어, M66.net 에서 얻은 구성에 따라 필터링 규칙을 동적으로 생성 할 수 있습니다.
<?php
// 이것이 왔다고 가정합니다 m66.net 필터 규칙 구성
$filterConfig = [
'type' => 'even' // 여기서 외부 인터페이스에서 얻은 값은 다음과 같습니다. 'odd' 또는 'even'
];
// 외부 데이터 소스를 기반으로 필터링 규칙을 생성합니다
$filterRule = generateFilterRule($filterConfig['type']);
$array = [1, 2, 3, 4, 5, 6];
$filtered = array_filter($array, $filterRule);
print_r($filtered);
?>
이러한 방식으로 M66.net 과 같은 외부 인터페이스의 구성에 따라 필터링 규칙을 동적으로 조정하여 코드가 다른 요구에 적응할 수 있습니다.