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

Comment puis-je rechercher efficacement des paires clé-valeur dans des tableaux PHP multidimensionnels ?

Mary-Kate Olsen
Libérer: 2024-12-19 08:29:11
original
834 Les gens l'ont consulté

How Can I Efficiently Search for Key-Value Pairs in Multidimensional PHP Arrays?

Recherche récursive de paires clé-valeur dans des tableaux PHP multidimensionnels

La recherche de paires clé-valeur spécifiques dans un tableau multidimensionnel peut être fastidieuse. Si la profondeur du tableau est variable, trouver une solution rapide et efficace est essentiel.

Fonction de recherche récursive

La fonction PHP suivante utilise la récursivité pour parcourir le tableau de manière récursive, en comparant valeurs pour une clé donnée :

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

Exemple Utilisation

Considérez l'exemple de tableau suivant :

$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

Pour trouver tous les sous-tableaux avec la clé « nom » et la valeur « chat 1 », nous utiliser :

print_r(search($arr, 'name', 'cat 1'));
Copier après la connexion

Sortie :

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

    [1] => Array
        (
            [id] => 3
            [name] => cat 1
        )

)
Copier après la connexion

Considérations d'efficacité

Pour une efficacité améliorée, en particulier pour les grands tableaux , envisagez d'utiliser une fonction récursive qui transmet les résultats par référence. En partageant un seul tableau $results temporaire, les performances peuvent être considérablement améliorées :

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

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal