Maison > développement back-end > tutoriel php > Comment trouver efficacement des paires clé-valeur dans des tableaux PHP multidimensionnels ?

Comment trouver efficacement des paires clé-valeur dans des tableaux PHP multidimensionnels ?

DDD
Libérer: 2024-12-24 14:25:10
original
514 Les gens l'ont consulté

How to Efficiently Find Key-Value Pairs in Multidimensional PHP Arrays?

Rechercher des valeurs dans des tableaux multidimensionnels à l'aide de clés en PHP

La recherche de paires clé-valeur spécifiques dans des tableaux multidimensionnels peut être une tâche fastidieuse, surtout si vous ne savez pas la profondeur du tableau. Cet article présente une fonction PHP efficace qui parcourt le tableau de manière récursive, renvoyant tous les sous-tableaux qui correspondent aux critères de recherche.

La fonction, search(), prend trois paramètres : le tableau à rechercher, la clé à rechercher. , et la valeur correspondante. Il utilise la récursion pour explorer tous les niveaux du tableau, en vérifiant la paire clé-valeur à chaque niveau.

function search($array, $key, $value)
{
    $results = array();

    if (is_array($array)) {
        if (isset($array[$key]) && $array[$key] == $value) {
            $results[] = $array;
        }

        foreach ($array as $subarray) {
            $results = array_merge($results, search($subarray, $key, $value));
        }
    }

    return $results;
}
Copier après la connexion

Par exemple, étant donné le tableau :

$arr = array(0 => array('id' => 1, 'name' => 'cat 1'),
             1 => array('id' => 2, 'name' => 'cat 2'),
             2 => array('id' => 3, 'name' => 'cat 1'));
Copier après la connexion

Appel de la recherche ( $arr, 'name', 'cat 1') renverrait :

array(0 => array('id' => 1, 'name' => 'cat 1'),
      1 => array('id' => 3, 'name' => 'cat 1'));
Copier après la connexion

Pour plus d'efficacité, une version optimisée de la fonction, search_r(), peut être utilisé :

function search($array, $key, $value)
{
    $results = array();
    search_r($array, $key, $value, $results);
    return $results;
}

function search_r($array, $key, $value, &$results)
{
    if (!is_array($array)) {
        return;
    }

    if (isset($array[$key]) && $array[$key] == $value) {
        $results[] = $array;
    }

    foreach ($array as $subarray) {
        search_r($subarray, $key, $value, $results);
    }
}
Copier après la connexion

Cette version évite la fusion répétitive de tableaux, ce qui la rend plus efficace.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal