Maison >développement back-end >tutoriel php >Comment filtrer un tableau en fonction du préfixe de clé en PHP ?

Comment filtrer un tableau en fonction du préfixe de clé en PHP ?

DDD
DDDoriginal
2024-10-29 21:54:29892parcourir

How to Filter an Array Based on Key Prefix in PHP?

Filtrage des éléments du tableau en fonction du préfixe de clé

Étant donné un tableau avec des clés qui suivent un modèle spécifique, il peut être nécessaire de conserver sélectivement uniquement les éléments répondant à certains critères. Dans ce cas, nous visons à filtrer un tableau, en ne conservant que les éléments dont les clés commencent par une chaîne particulière, comme "foo-".

Approche fonctionnelle

Pour Pour y parvenir en utilisant une approche fonctionnelle, une option consiste à utiliser la fonction array_filter() en conjonction avec un rappel personnalisé. La fonction de rappel examine chaque clé et renvoie true si elle commence par "foo-". La fonction array_filter() filtre ensuite le tableau en fonction de cette condition, en préservant uniquement les clés correspondantes.

<code class="php">$array = array_filter($array, function($key) {
    return strpos($key, 'foo-') === 0;
}, ARRAY_FILTER_USE_KEY);</code>

Approche procédurale

Une approche procédurale implique une itération manuelle le tableau. Pour chaque clé, nous vérifions si elle commence par "foo-", et si c'est le cas, nous ajoutons la paire clé-valeur à un nouveau tableau.

<code class="php">$only_foo = array();
foreach ($array as $key => $value) {
    if (strpos($key, 'foo-') === 0) {
        $only_foo[$key] = $value;
    }
}</code>

Approche procédurale utilisant des objets

Une autre approche procédurale consiste à utiliser un ArrayIterator pour parcourir le tableau. Cette approche nous permet d'accéder à la fois à la clé et à la valeur de chaque élément. Nous filtrons manuellement le tableau en vérifiant si chaque clé commence par "foo-" et en ajoutant les éléments correspondants à un nouveau tableau.

<code class="php">$i = new ArrayIterator($array);
$only_foo = array();
while ($i->valid()) {
    if (strpos($i->key(), 'foo-') === 0) {
        $only_foo[$i->key()] = $i->current();
    }
    $i->next();
}</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn