현재 위치: > 최신 기사 목록> Array_diff () + array_keys ()를 사용하여 다차원 배열에서 키를 필터링하십시오.

Array_diff () + array_keys ()를 사용하여 다차원 배열에서 키를 필터링하십시오.

M66 2025-06-06

PHP 개발에서는 종종 다차원 배열에서 특정 주요 값을 필터링해야합니다. 이 기사는이 기능을 우아하고 효율적으로 달성하기 위해 두 기능 array_diff ()Array_keys () 를 결합하는 방법을 소개합니다.

1. 기능 소개

  • Array_Keys ()
    지정된 키 값 필터링을 지원하는 배열의 모든 키 이름을 반환합니다.

  • Array_diff ()
    첫 번째 배열에서는 값을 반환하지만 다른 배열에서는 두 가지 (또는 그 이상) 배열의 차이를 계산합니다.

이 두 기능을 결합함으로써 먼저 배열의 모든 키 이름을 얻은 다음 차이를 통해 불필요한 키를 제거하고 마지막으로 필터링 된 배열을 재생할 수 있습니다.

2. 문제 시나리오

다음 구조가있는 다차원 배열이 있다고 가정합니다.

 $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);

코드 구문 분석 :

  1. array_keys ($ item) 를 통해 현재 서브 어레이의 모든 키 이름을 얻으십시오.

  2. Array_Diff ()를 사용하여 유지하려는 키, 즉 원래 키 세트를 삭제할 키 세트에서 뺀 것을 계산하십시오.

  3. 필터링 된 키 이름을 반복하고 새 배열을 다시 조립하십시오.

  4. 마지막으로 $ 결과는 필터링 된 다차원 배열입니다.

4. 운영 결과

 Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Alice
        )

    [1] => Array
        (
            [id] => 2
            [name] => Bob
        )
)

5. 요약

Array_Diff ()Array_Keys () 의 조합을 통해 다차원 배열에서 지정된 키 값을 빠르고 유연하게 필터링 할 수 있습니다. 이 방법은 매우 다양하며 다양한 복잡한 배열 구조를 처리하는 데 적합합니다. 필터의 키가 더 많거나 배열 레벨이 더 깊어지면 재귀 처리를위한 함수로 캡슐화 될 수도 있습니다.