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; }
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'));
Appel de la recherche ( $arr, 'name', 'cat 1') renverrait :
array(0 => array('id' => 1, 'name' => 'cat 1'), 1 => array('id' => 3, 'name' => 'cat 1'));
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); } }
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!