Die Suche nach bestimmten Schlüssel-Wert-Paaren in mehrdimensionalen Arrays kann eine mühsame Aufgabe sein, insbesondere wenn Sie es nicht wissen die Tiefe des Arrays. In diesem Artikel wird eine effiziente PHP-Funktion vorgestellt, die das Array rekursiv durchläuft und alle Unterarrays zurückgibt, die den Suchkriterien entsprechen.
Die Funktion search() benötigt drei Parameter: das zu durchsuchende Array und den zu suchenden Schlüssel und den abzugleichenden Wert. Es verwendet Rekursion, um alle Ebenen des Arrays zu erkunden und auf jeder Ebene nach dem Schlüssel-Wert-Paar zu suchen.
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; }
Zum Beispiel bei gegebenem Array:
$arr = array(0 => array('id' => 1, 'name' => 'cat 1'), 1 => array('id' => 2, 'name' => 'cat 2'), 2 => array('id' => 3, 'name' => 'cat 1'));
Aufruf von search( $arr, 'name', 'cat 1') würde Folgendes zurückgeben:
array(0 => array('id' => 1, 'name' => 'cat 1'), 1 => array('id' => 3, 'name' => 'cat 1'));
Aus Effizienzgründen kann eine optimierte Version der Funktion search_r() verwendet werden:
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); } }
Diese Version vermeidet das wiederholte Zusammenführen von Arrays und macht sie dadurch effizienter.
Das obige ist der detaillierte Inhalt vonWie kann man Schlüssel-Wert-Paare in mehrdimensionalen PHP-Arrays effizient finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!