현재 위치: > 최신 기사 목록> Array_Filter () 함수를 사용하여 연관 배열을 처리하는 방법? 어떻게 작동하고 어떤 문제를 해결할 수 있습니까?

Array_Filter () 함수를 사용하여 연관 배열을 처리하는 방법? 어떻게 작동하고 어떤 문제를 해결할 수 있습니까?

M66 2025-05-17

PHP에서 array_filter () 함수는 배열 요소를 필터링하는 데 매우 유용한 도구입니다. 그것은 들어오는 콜백 함수에 따라 배열의 요소를 필터링하며 조건을 충족하는 요소 만 유지됩니다. 콜백 함수가 전달되지 않으면 Array_Filter ()는 의 값으로 요소를 삭제합니다. 연관 배열을 처리 할 때 Array_Filter ()는 복잡한 데이터 필터링 작업을 매우 편리하게 수행 할 수도 있습니다. 다음으로 Array_Filter ()를 사용하여 연관 배열을 처리하는 방법과 작동 방식 및 응용 프로그램 시나리오를 자세히 설명합니다.

1. Array_Filter () 의 기본 구문

 array array_filter ( array $array , callable $callback = ? , int $mode = 0 ) : array
  • $ 배열 : 필터링 할 배열.

  • $ 콜백 : 필터링을위한 콜백 함수. 콜백 함수가 전달되지 않으면 거짓 값이있는 요소가 기본적으로 삭제됩니다.

  • $ 모드 : 콜백 함수의 매개 변수가 배열 요소의 값인지 또는 배열의 키 값 쌍인지 결정합니다. Array_filter_use_key (기본값), array_filter_use_both (키와 값을 모두 전달).

2. Array_Filter ()가 연관 배열 작업을 처리하는 방법

PHP에서 연관 배열의 키는 일반적으로 문자열 또는 숫자이며 쌍을 이루는 값은 저장하고 필터링하려는 데이터입니다. Array_Filter ()는 값, 키 또는 키 및 값에 따라 필터링 할 수 있습니다.

예 1 : 값을 기준으로 필터링

여러 사용자 정보가 포함 된 연관 배열이 있다고 가정하고 18 세 미만의 모든 사용자를 필터링하려고합니다.

 <?php
$users = [
    "user1" => ["name" => "Alice", "age" => 25],
    "user2" => ["name" => "Bob", "age" => 17],
    "user3" => ["name" => "Charlie", "age" => 30]
];

$filtered_users = array_filter($users, function($user) {
    return $user["age"] >= 18;  // 연령만이 더 크거나 같거나 동일합니다 18 사용자
});

print_r($filtered_users);
?>

산출:

 Array
(
    [user1] => Array
        (
            [name] => Alice
            [age] => 25
        )
    [user3] => Array
        (
            [name] => Charlie
            [age] => 30
        )
)

위의 예에서, array_filter () 함수는 Array $ user를 통과하고 콜백 함수를 사용하여 이전 또는 18 이상의 사용자를 필터링합니다.

예제 2 : 키를 기반으로 필터링

특정 사용자로부터 정보를 삭제하는 것과 같은 특정 키를 기반으로 연관 배열을 필터링하려고한다고 가정합니다.

 <?php
$users = [
    "user1" => ["name" => "Alice", "age" => 25],
    "user2" => ["name" => "Bob", "age" => 17],
    "user3" => ["name" => "Charlie", "age" => 30]
];

$filtered_users = array_filter($users, function($user, $key) {
    return $key != "user2";  // 제외 키는 다음과 같습니다 user2 사용자
}, ARRAY_FILTER_USE_BOTH);

print_r($filtered_users);
?>

산출:

 Array
(
    [user1] => Array
        (
            [name] => Alice
            [age] => 25
        )
    [user3] => Array
        (
            [name] => Charlie
            [age] => 30
        )
)

이 예에서 Array_Filter ()array_filter_use_both 모드를 사용하여 콜백 함수가 배열 요소의 값뿐만 아니라 키에도 액세스 할 수 있도록합니다. 이런 식으로, 우리는 키를 기반으로 요소를 유지할지 여부를 결정할 수 있습니다.

3. array_filter () 가 해결할 수있는 문제

3.1. 배열에서 잘못된 값을 깨끗하게하십시오

데이터를 처리 할 때는 NULL 값, NULL , FALLE , 0 또는 빈 문자열이 포함 된 배열이 발생할 수 있습니다. Array_Filter ()를 사용하여 이러한 유효하지 않은 데이터를 쉽게 정리하십시오.

예를 들어 배열에서 False 값이있는 요소를 삭제합니다.

 <?php
$array = [0, 1, false, 2, "", null, 3];
$filtered_array = array_filter($array);  // 모두 기본적으로 삭제됩니다 `false` 값
print_r($filtered_array);
?>

산출:

 Array
(
    [1] => 1
    [3] => 2
    [6] => 3
)

3.2. 특정 기준을 충족하는 필터 데이터

Array_Filter ()는 데이터 세트에서 특정 기준을 충족하는 요소를 필터링해야 할 때 매우 편리한 도구입니다. 예를 들어, 모든 주문을 특정 값보다 큰 금액으로 필터링하거나 모든 온라인 사용자를 필터링하는 데 사용될 수 있습니다.

3.3. 코드의 가독성을 향상시킵니다

복잡한 데이터 필터링 로직은 Array_Filter () 를 통해 클리너 코드로 구현할 수 있습니다. Foreach Loops를 사용하여 데이터를 수동으로 필터링하는 것과 비교하여 Array_Filter ()는 코드를 더 명확하고 읽기 쉽게 만듭니다.

4. 프로세스 URL 관련 데이터

여러 URL 주소가 포함 된 배열이 있고 지정된 도메인 이름 (예 : M66.net )이 포함 된 URL을 필터링하려고합니다. Array_Filter ()를 사용하여 Parse_url () 와 협력 하여이 작업을 완료 할 수 있습니다.

 <?php
$urls = [
    "http://example.com/page1",
    "https://m66.net/page2",
    "https://m66.net/page3",
    "http://anotherdomain.com/page4"
];

$filtered_urls = array_filter($urls, function($url) {
    $parsed_url = parse_url($url);
    return isset($parsed_url['host']) && $parsed_url['host'] === 'm66.net';
});

print_r($filtered_urls);
?>

산출: