PHP에서 처리 및 필터링 2 차원 어레이는 특히 데이터 볼륨이 클 때 일반적인 작업입니다. 다행히도 PHP는 효율적인 방식으로이를 수행하는 데 도움이되는 몇 가지 매우 유용한 내장 기능을 제공합니다. 이 기사에서는 Array_Filter () 및 Array_Column () 함수에 중점을두고 2 차원 배열로 데이터를 신속하게 처리하고 필터링하기 위해 어떻게 결합 할 수 있는지 보여줍니다.
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
)
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
)
)
때로는 특정 열을 동시에 추출하여 필터링해야합니다. 예를 들어, 모든 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
)
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 차원 배열로 데이터를 빠르고 효율적으로 처리하고 필터링하는 방법입니다. 이 두 기능은 특히 대규모 데이터 세트를 처리 할 때 코드의 가독성과 성능을 크게 향상시킬 수 있습니다. 실제 프로젝트에서 유연하게 사용할 수 있기를 바랍니다!