PHP 개발에서는 종종 다차원 배열에서 특정 주요 값을 필터링해야합니다. 이 기사는이 기능을 우아하고 효율적으로 달성하기 위해 두 기능 array_diff () 와 Array_keys () 를 결합하는 방법을 소개합니다.
Array_Keys ()
지정된 키 값 필터링을 지원하는 배열의 모든 키 이름을 반환합니다.
Array_diff ()
첫 번째 배열에서는 값을 반환하지만 다른 배열에서는 두 가지 (또는 그 이상) 배열의 차이를 계산합니다.
이 두 기능을 결합함으로써 먼저 배열의 모든 키 이름을 얻은 다음 차이를 통해 불필요한 키를 제거하고 마지막으로 필터링 된 배열을 재생할 수 있습니다.
다음 구조가있는 다차원 배열이 있다고 가정합니다.
$data = [
[
'id' => 1,
'name' => 'Alice',
'age' => 25,
'city' => 'Beijing',
],
[
'id' => 2,
'name' => 'Bob',
'age' => 30,
'city' => 'Shanghai',
],
];
우리는 각 서브 어레이에서 나이 와 도시 필드를 걸러 내고 ID 와 이름 만 남겨두고 싶습니다.
<?php
$data = [
[
'id' => 1,
'name' => 'Alice',
'age' => 25,
'city' => 'Beijing',
],
[
'id' => 2,
'name' => 'Bob',
'age' => 30,
'city' => 'Shanghai',
],
];
// 필터링 해야하는 주요 이름
$keysToRemove = ['age', 'city'];
$result = [];
foreach ($data as $item) {
// 현재 배열의 모든 키를 얻으십시오
$keys = array_keys($item);
// 유지할 키를 계산하십시오,지금 바로 $keys 그리고 $keysToRemove 차이 세트
$filteredKeys = array_diff($keys, $keysToRemove);
// 예약 키가있는 서브 어레이를 재구성하십시오
$filteredItem = [];
foreach ($filteredKeys as $key) {
$filteredItem[$key] = $item[$key];
}
$result[] = $filteredItem;
}
print_r($result);
array_keys ($ item) 를 통해 현재 서브 어레이의 모든 키 이름을 얻으십시오.
Array_Diff ()를 사용하여 유지하려는 키, 즉 원래 키 세트를 삭제할 키 세트에서 뺀 것을 계산하십시오.
필터링 된 키 이름을 반복하고 새 배열을 다시 조립하십시오.
마지막으로 $ 결과는 필터링 된 다차원 배열입니다.
Array
(
[0] => Array
(
[id] => 1
[name] => Alice
)
[1] => Array
(
[id] => 2
[name] => Bob
)
)
Array_Diff () 와 Array_Keys () 의 조합을 통해 다차원 배열에서 지정된 키 값을 빠르고 유연하게 필터링 할 수 있습니다. 이 방법은 매우 다양하며 다양한 복잡한 배열 구조를 처리하는 데 적합합니다. 필터의 키가 더 많거나 배열 레벨이 더 깊어지면 재귀 처리를위한 함수로 캡슐화 될 수도 있습니다.