Suche nach Schlüssel-Wert-Paaren in mehrdimensionalen Arrays in PHP
Einführung:
Suchen Spezifische Subarrays basierend auf Schlüsselwertübereinstimmungen innerhalb mehrdimensionaler Arrays können eine Herausforderung darstellen, insbesondere wenn die Tiefe des Arrays unbekannt ist. In diesem Artikel wird ein rekursiver Ansatz zur effizienten Durchführung dieses Suchvorgangs untersucht.
Funktionsdefinition:
function search($array, $key, $value) { // Initialize an empty results array $results = array(); // Check if the current element is an array if (is_array($array)) { // If the current element matches the key-value pair, add it to the results if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array; } // Recursively search through each subarray foreach ($array as $subarray) { $results = array_merge($results, search($subarray, $key, $value)); } } // Return the accumulated results return $results; }
Beispiel:
Berücksichtigen Sie das folgende mehrdimensionale Array:
$arr = array( 0 => array('id' => 1, 'name' => "cat 1"), 1 => array('id' => 2, 'name' => "cat 2"), 2 => array('id' => 3, 'name' => "cat 1") );
Bei der Suche nach dem Schlüssel-Wert-Paar 'name' => 'cat 1', die Funktion gibt Folgendes zurück:
array( 0 => array('id' => 1, 'name' => "cat 1"), 1 => array('id' => 3, 'name' => "cat 1") );
Überlegungen zur Leistung:
Für Szenarien, in denen Effizienz im Vordergrund steht, ist ein alternativer Ansatz verfügbar:
function searchOptimized($array, $key, $value) { $results = array(); searchOptimized_r($array, $key, $value, $results); return $results; } function searchOptimized_r($array, $key, $value, &$results) { if (!is_array($array)) { return; } if (isset($array[$key]) && $array[$key] == $value) { $results[] = $array; } foreach ($array as $subarray) { searchOptimized_r($subarray, $key, $value, $results); } }
In dieser optimierten Version werden die Suchergebnisse direkt im temporären $results-Array gesammelt, sodass keine Array-Zusammenführung erforderlich ist. Durch die Angabe der Pass-by-Reference im Aufruf von searchOptimized_r behält diese Version eine hohe Leistung bei und bewahrt gleichzeitig die Kompatibilität mit älteren PHP-Versionen.
Das obige ist der detaillierte Inhalt vonWie kann man in den mehrdimensionalen Arrays von PHP effizient nach Schlüssel-Wert-Paaren suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!