Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann man Subarrays basierend auf Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays effizient finden?
Subarrays basierend auf Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays finden
Beim Durchlaufen mehrdimensionaler Arrays kann es schwierig sein, bestimmte Subarrays basierend auf zu finden auf einem Schlüssel-Wert-Paar. Es gibt jedoch eine effiziente Möglichkeit, dies rekursiv zu tun, unabhängig von der Tiefe des Arrays.
Funktionsimplementierung:
Lassen Sie uns eine Funktion erstellen, um nach Unterarrays zu suchen, die die angegebenen Bedingungen erfüllen :
function search($array, $key, $value) { $results = array(); if (is_array($array)) { // Check if the current subarray matches if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array; } // Recursively search inner subarrays foreach ($array as $subarray) { $results = array_merge($results, search($subarray, $key, $value)); } } return $results; }
Nutzung Beispiel:
Angenommen 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"));
Wir können nach Unterarrays mit dem Schlüssel „Name“ und dem Wert „Katze 1“ suchen:
$found = search($arr, 'name', 'cat 1'); print_r($found);
Ausgabe:
Array ( [0] => Array ( [id] => 1 [name] => cat 1 ) [1] => Array ( [id] => 3 [name] => cat 1 ) )
Effizienz Überlegungen:
Für eine verbesserte Effizienz, insbesondere beim Umgang mit großen Arrays, kann die Funktion durch Vermeidung der Array-Zusammenführung optimiert werden. Stattdessen können Ergebnisse aus rekursiven Aufrufen in einem temporären Array gespeichert werden:
function search_optimized($array, $key, $value) { $results = []; 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); } }
Durch die Übergabe des Ergebnisarrays als Referenz kann die Funktion das Endergebnis effizient erstellen.
Das obige ist der detaillierte Inhalt vonWie kann man Subarrays basierend auf Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays effizient finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!