현재 위치: > 최신 기사 목록> 다른 시나리오에 맞게 Array_Filter ()의 필터링 규칙을 매개 변수화하십시오.

다른 시나리오에 맞게 Array_Filter ()의 필터링 규칙을 매개 변수화하십시오.

M66 2025-06-03

PHP에서 array_filter () 함수는 콜백 함수에 의해 배열의 요소를 필터링하는 데 사용됩니다. 이것은 주어진 규칙을 통해 배열을 필터링하여 규칙과 일치하는 요소를 남깁니다. 일부 시나리오에서는 다른 요구에 따라 필터링 조건을 유연하게 조정해야 할 수도 있으므로 다른 시나리오에서 재사용 및 조정될 수 있도록 필터링 규칙을 매개 변수화하는 것이 매우 중요합니다.

1. 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
)

이 예에서는 콜백 함수를 통해 필터링 규칙을 정의합니다. 홀수 만 유지됩니다. 그러나 실제 응용 프로그램에는 여러 가지 다른 필터링 규칙이있을 수 있으며 매번 새로운 콜백 기능을 작성하는 대신 필터링 규칙을 유연하게 선택할 수 있기를 원합니다.

2. 매개 변수화 필터링 규칙

필터링 규칙을보다 유연하게 만들기 위해 필터링 규칙을 매개 변수화하여 다른 시나리오의 요구에 따라 다른 필터 조건을 선택할 수 있도록 필터링 규칙을 매개 변수화 할 수 있습니다. 구현의 핵심은 필터링 규칙을 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 () 함수는 전달 된 문자열을 기반으로 필터링 규칙을 결정하여 필터링 조건을보다 유연하게 만듭니다.

3. 고급 응용 프로그램 : 외부 데이터 소스를 통합합니다

실제 개발에서 필터링 규칙은 때때로 외부 데이터 소스 (예 : 데이터베이스 쿼리 결과, 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 과 같은 외부 인터페이스의 구성에 따라 필터링 규칙을 동적으로 조정하여 코드가 다른 요구에 적응할 수 있습니다.

결론적으로