Position actuelle: Accueil> Derniers articles> Méthodes pour préserver les noms de clés lors de l'utilisation de Array_Filter ()

Méthodes pour préserver les noms de clés lors de l'utilisation de Array_Filter ()

M66 2025-06-05

Array_Filter () est l'une des fonctions couramment utilisées dans PHP, qui est utilisée pour filtrer les éléments dans un tableau. Normalement, Array_Filter () ne renvoiera que la valeur du tableau qui répond aux critères et réinitialisera le nom de clé du tableau par défaut, c'est-à-dire conserver les noms de clés entiers continus à partir de 0. Mais parfois, nous voulons pouvoir conserver les noms de clés d'origine lors du filtrage de la matrice. Cet article expliquera comment préserver les noms de clés d'un tableau lors de l'utilisation de Array_Filter () .

Utilisation de base de Array_Filter ()

Avant de discuter de la façon de préserver les noms de clés, examinons d'abord l'utilisation de base de Array_Filter () . La fonction Array_Filter () iratera sur le tableau et décidera de conserver des éléments dans le tableau en fonction de la valeur de retour de la fonction de rappel. Si la fonction de rappel renvoie true , l'élément sera conservé, sinon il sera supprimé.

 <?php
$array = [1, 2, 3, 4, 5];

$result = array_filter($array, function($value) {
    return $value % 2 === 0;  // Seuls même les nombres sont conservés
});

print_r($result);
?>

Résultat de sortie:

 Array
(
    [1] => 2
    [3] => 4
)

Question: Comment préserver les noms clés d'un tableau?

Comme indiqué ci-dessus, Array_Filter () filtre le tableau, mais réinitialise le nom de la clé. Dans cet exemple, le nom de la clé du tableau de sortie de Array_Filter () commence à 0 , et nous voulons préserver le nom de clé du tableau d'origine.

Solution: utilisez le paramètre Array_Filter_Use_Key

PHP fournit une solution commune, en utilisant le troisième paramètre array_filter_use_key de array_filter () . Lorsque vous utilisez cette constante, array_filter () exécute la fonction de rappel en fonction du nom de la clé au lieu de la valeur, afin que le nom de clé puisse être conservé lors du filtrage.

 <?php
$array = [1 => 10, 2 => 20, 3 => 30, 4 => 40, 5 => 50];

$result = array_filter($array, function($key) {
    return $key % 2 === 0;  // Gardez les clés uniformes
}, ARRAY_FILTER_USE_KEY);

print_r($result);
?>

Résultat de sortie:

 Array
(
    [2] => 20
    [4] => 40
)

Dans cet exemple, nous utilisons array_filter_use_key afin que les paramètres de la fonction de rappel soient les clés du tableau, pas les valeurs. De cette façon, nous pouvons filtrer le tableau en fonction des conditions du nom de clé tout en conservant le nom de clé d'origine.

Exemples pratiques de conservation des noms de clés du tableau

Supposons que nous ayons un tableau contenant plusieurs adresses URL, nous voulons filtrer les adresses contenant le nom de domaine m66.net et conserver le nom de clé d'origine.

 <?php
$urls = [
    'a' => 'http://example.com/page1',
    'b' => 'https://m66.net/page2',
    'c' => 'http://m66.net/page3',
    'd' => 'https://example.com/page4',
];

$result = array_filter($urls, function($url) {
    return strpos($url, 'm66.net') !== false;  // Filtrez l&#39;inclusion m66.net de URL
});

print_r($result);
?>

Résultat de sortie:

 Array
(
    [b] => https://m66.net/page2
    [c] => http://m66.net/page3
)

Comme indiqué ci-dessus, Array_Filter () filtre les adresses URL contenant m66.net et conserve leurs noms de clés ( B et C ).

Résumer

La fonction Array_Filter () est très puissante et peut être utilisée pour filtrer les tableaux, mais par défaut, le nom de clé du tableau est réinitialisé. Si nous voulons préserver le nom de clé du tableau, nous spécifions simplement la constante array_filter_use_key lors de l'utilisation de Array_Filter () , afin que la fonction de rappel accepte la clé du tableau, pas seulement la valeur.

De cette façon, vous pouvez filtrer de manière flexible le tableau en fonction des conditions du nom ou de la valeur de la clé, et conserver le nom de clé d'origine pour maintenir la structure du tableau intact.