Position actuelle: Accueil> Derniers articles> Comment filtrer les valeurs de clés spécifiques dans des tableaux multidimensionnels à l'aide de array_diff () et array_keys ()?

Comment filtrer les valeurs de clés spécifiques dans des tableaux multidimensionnels à l'aide de array_diff () et array_keys ()?

M66 2025-06-06

Dans le développement de PHP, vous rencontrez souvent la nécessité de filtrer certaines valeurs clés à partir de tableaux multidimensionnels. Cet article présentera comment combiner les deux fonctions array_diff () et array_keys () pour atteindre cette fonction gracieusement et efficacement.

1. Fonction Introduction

  • array_keys ()
    Renvoie tous les noms de clés du tableau, prenant en charge le filtrage de valeur de clé spécifié.

  • array_diff ()
    Calcule la différence entre deux (ou plus) tableaux, renvoyant les valeurs dans le premier tableau mais pas dans d'autres tableaux.

En combinant ces deux fonctions, nous pouvons d'abord obtenir tous les noms de clés du tableau, puis éliminer les clés inutiles à travers la différence, et enfin régénérer le tableau filtré.

2. Scénario de problème

Supposons qu'il existe un tableau multidimensionnel avec la structure suivante:

 $data = [
    [
        'id' => 1,
        'name' => 'Alice',
        'age' => 25,
        'city' => 'Beijing',
    ],
    [
        'id' => 2,
        'name' => 'Bob',
        'age' => 30,
        'city' => 'Shanghai',
    ],
];

Nous voulons filtrer l'âge et les champs de la ville dans chaque sous-réseau, ne laissant que l'ID et le nom .

Implémenter le code

 <?php

$data = [
    [
        'id' => 1,
        'name' => 'Alice',
        'age' => 25,
        'city' => 'Beijing',
    ],
    [
        'id' => 2,
        'name' => 'Bob',
        'age' => 30,
        'city' => 'Shanghai',
    ],
];

// Noms de clés qui doivent être filtrés
$keysToRemove = ['age', 'city'];

$result = [];

foreach ($data as $item) {
    // Obtenez toutes les clés du tableau actuel
    $keys = array_keys($item);
    
    // Calculez les clés à conserver,Tout de suite $keys et $keysToRemove L&#39;ensemble de différence
    $filteredKeys = array_diff($keys, $keysToRemove);
    
    // Reconstruire les sous-réseaux avec des clés réservées
    $filteredItem = [];
    foreach ($filteredKeys as $key) {
        $filteredItem[$key] = $item[$key];
    }
    
    $result[] = $filteredItem;
}

print_r($result);

Analyse de code:

  1. Obtenez tous les noms clés de la sous-bande actuelle via Array_Keys ($ item) .

  2. Utilisez Array_Diff () pour calculer la clé que vous souhaitez conserver, c'est-à-dire le jeu de clé d'origine moins l'ensemble de la clé à supprimer.

  3. Itérer sur les noms de clés filtrés et réassembler le nouveau tableau.

  4. Enfin, $ Résultat est le tableau multidimensionnel filtré.

4. Résultats de l'opération

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

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

5. Résumé

Grâce à la combinaison de array_diff () et array_keys () , nous pouvons filtrer rapidement et flexiblement des valeurs de clés spécifiées à partir de tableaux multidimensionnels. Cette méthode est très polyvalente et convient pour gérer diverses structures de réseau complexes. S'il y a plus de clés pour filtrer ou si le niveau du tableau est plus profond, il peut également être encapsulé en fonctions de traitement récursif.