Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich effizient nach Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays suchen?
Rekursive Suche nach Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays
Die Suche nach bestimmten Schlüssel-Wert-Paaren innerhalb eines mehrdimensionalen Arrays kann mühsam sein. Wenn die Array-Tiefe variabel ist, ist es wichtig, eine schnelle und effiziente Lösung zu finden.
Rekursive Suchfunktion
Die folgende PHP-Funktion verwendet Rekursion, um das Array rekursiv zu durchlaufen und zu vergleichen Werte für einen bestimmten Schlüssel:
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; }
Beispiel Verwendung
Betrachten Sie das folgende Beispielarray:
$arr = array( 0 => array('id' => 1, 'name' => 'cat 1'), 1 => array('id' => 2, 'name' => 'cat 2'), 2 => array('id' => 3, 'name' => 'cat 1') );
Um alle Unterarrays mit dem Schlüssel „Name“ und dem Wert „Katze 1“ zu finden, verwenden wir:
print_r(search($arr, 'name', 'cat 1'));
Ausgabe:
Array ( [0] => Array ( [id] => 1 [name] => cat 1 ) [1] => Array ( [id] => 3 [name] => cat 1 ) )
Effizienz Überlegungen
Für eine verbesserte Effizienz, insbesondere bei großen Arrays, sollten Sie die Verwendung einer rekursiven Funktion in Betracht ziehen, die Ergebnisse als Referenz übergibt. Durch die gemeinsame Nutzung eines einzigen temporären $results-Arrays kann die Leistung erheblich verbessert werden:
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); } }
Das obige ist der detaillierte Inhalt vonWie kann ich effizient nach Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!