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; }
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') );
Pour trouver tous les sous-tableaux avec la clé « nom » et la valeur « chat 1 », nous utiliser :
print_r(search($arr, 'name', 'cat 1'));
Sortie :
Array ( [0] => Array ( [id] => 1 [name] => cat 1 ) [1] => Array ( [id] => 3 [name] => cat 1 ) )
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); } }
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!