현재 위치: > 최신 기사 목록> array_filter () 및 array_column ()으로 2 차원 배열을 신속하게 처리합니다.

array_filter () 및 array_column ()으로 2 차원 배열을 신속하게 처리합니다.

M66 2025-05-14

PHP에서 처리 및 필터링 2 차원 어레이는 특히 데이터 볼륨이 클 때 일반적인 작업입니다. 다행히도 PHP는 효율적인 방식으로이를 수행하는 데 도움이되는 몇 가지 매우 유용한 내장 기능을 제공합니다. 이 기사에서는 Array_Filter ()Array_Column () 함수에 중점을두고 2 차원 배열로 데이터를 신속하게 처리하고 필터링하기 위해 어떻게 결합 할 수 있는지 보여줍니다.

1. array_column () 함수 소개

Array_Column () 함수는 다차원 배열에서 열 값을 추출하는 데 사용됩니다. 2D 어레이에서 특정 열의 값을 추출하는 데 좋습니다. 이 기능의 기본 구문은 다음과 같습니다.

 array_column(array $array, mixed $column_key, mixed $index_key = null): array
  • $ 배열 : 2 차원 배열.

  • $ column_key : 추출 할 열 키입니다.

  • $ index_key : 옵션 매개 변수, 반환 된 배열의 인덱스를 지정합니다.

예를 들어, 각 서브 어레이가 사용자의 정보를 나타내는 2 차원 배열이 있습니다.

 $users = [
    ['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
    ['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
    ['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net'],
];

모든 사용자의 이름 열을 추출하려고합니다. Array_Column ()을 사용할 수 있습니다.

 $names = array_column($users, 'name');
print_r($names);

출력은 다음과 같습니다.

 Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

2. array_filter () 함수 소개

Array_Filter () 함수는 지정된 조건을 충족하는 배열 및 반환 요소의 요소를 필터링하는 데 사용됩니다. 기본 구문은 다음과 같습니다.

 array_filter(array $array, callable $callback, int $mode = 0): array
  • $ 배열 : 입력 배열.

  • $ 콜백 : 콜백 함수, 배열의 각 요소를 판단하는 데 사용됩니다.

  • $ 모드 : 콜백 함수의 작동 방식을 결정하는 선택적 매개 변수, 일반적으로 기본값 0을 사용합니다.

이메일 주소에 M66.net이 포함 된 사용자를 필터링하려고한다고 가정 해 봅시다. Array_Filter ()를 사용하여 기준을 충족하는 사용자를 필터링 할 수 있습니다.

 $filteredUsers = array_filter($users, function($user) {
    return strpos($user['email'], 'm66.net') !== false;
});
print_r($filteredUsers);

출력은 다음과 같습니다.

 Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Alice
            [email] => alice@m66.net
        )

    [1] => Array
        (
            [id] => 2
            [name] => Bob
            [email] => bob@m66.net
        )

    [2] => Array
        (
            [id] => 3
            [name] => Charlie
            [email] => charlie@m66.net
        )
)

3. Array_Column ()Array_Filter ()를 사용하여 결합하십시오

때로는 특정 열을 동시에 추출하여 필터링해야합니다. 예를 들어, 모든 M66.net 도메인 이름의 이메일 주소를 필터링하고 이러한 사용자의 이름 만 추출하려고합니다. Array_Filter ()Array_Column ()을 조합하여 사용할 수 있습니다.

 $filteredEmails = array_filter($users, function($user) {
    return strpos($user['email'], 'm66.net') !== false;
});

$names = array_column($filteredEmails, 'name');
print_r($names);

출력은 다음과 같습니다.

 Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

4. 실제 결합 된 실제 사례

API에서 얻은 사용자 데이터 목록이 있다고 가정하고 각 사용자의 정보에는 이메일 주소가 포함되어 있습니다. M66.net 도메인 이름을 사용하여 모든 사용자를 걸러 내고 사용자 이름과 이메일 주소를 추출하려고합니다.

먼저 API를 통해 데이터를 가져 와서 $ 사용자 배열에 저장합니다.

 $users = [
    ['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
    ['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
    ['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net'],
    ['id' => 4, 'name' => 'David', 'email' => 'david@example.com'],
    ['id' => 5, 'name' => 'Eve', 'email' => 'eve@m66.net'],
];

다음으로 Array_Filter ()를 사용하여 이메일이 M66.net 이 포함 된 사용자를 필터링하고 Array_Column ()을 사용하여 이름과 이메일을 추출합니다.

 $filteredUsers = array_filter($users, function($user) {
    return strpos($user['email'], 'm66.net') !== false;
});

$names = array_column($filteredUsers, 'name');
$emails = array_column($filteredUsers, 'email');

print_r($names);
print_r($emails);

출력은 다음과 같습니다.

 Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
    [3] => Eve
)

Array
(
    [0] => alice@m66.net
    [1] => bob@m66.net
    [2] => charlie@m66.net
    [3] => eve@m66.net
)

이런 식으로, 우리는 기준을 충족하는 사용자를 필터링 할뿐만 아니라 이름과 이메일 주소를 추출합니다.

위는 Array_Filter ()Array_Column ()을 통해 2 차원 배열로 데이터를 빠르고 효율적으로 처리하고 필터링하는 방법입니다. 이 두 기능은 특히 대규모 데이터 세트를 처리 할 때 코드의 가독성과 성능을 크게 향상시킬 수 있습니다. 실제 프로젝트에서 유연하게 사용할 수 있기를 바랍니다!