php Prüfen ob Wert in array von array
Ich habe ein array in einem array.
$a = array ( 0 => array ( 'value' => 'America', ), 1 => array ( 'value' => 'England', ), )
Wie kann ich überprüfen, ob 'Amerika' im Feld vorhanden? Die Amerika-array könnte eine beliebige Taste, und es könnte eine beliebige Anzahl von subarrays, so eine verallgemeinerte Lösung bitte.
Blick auf das php-Handbuch sehe ich in_array, aber das funktioniert nur für die oberste Schicht. so etwas wie in_array("America", $a)
würde nicht funktionieren.
Dank.
- Wenn alle arrays nur einen Wert enthalten, warum sind Sie setzen Sie in die Felder? Warum nicht einfach haben, der Wert zugewiesen, der Schlüssel?
- Wird das Skript werden nur auf der Suche nach einer oder vielleicht eine kleine Menge von Elementen in einer großen multi-dimensionalen array? Oder wird es die Suche nach viele Elemente, die es "billiger" zu schaffen, einen Flachbild hashtable/array mit allen Elementen vor der Suche?
- Sorry, es war eigentlich mehr Werte in den arrays habe ich versucht, um es zu vereinfachen für die Frage, ich denke, das ging nach hinten Los.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine Allgemeine Lösung wäre:
Der Grund, warum ich wählte zu verwenden
in_array
und eine Schleife ist: Bevor ich untersuchen tieferen Ebenen der array-Struktur, die ich stellen Sie sicher, dass der gesuchte Wert nicht in der aktuellen Ebene. So, ich hoffe, dass der code schneller sein als eine Art von Tiefe ersten such-Methode.Natürlich, wenn Ihr array ist immer 2-dimensional und Sie nur wollen, suchen Sie in dieser Art von arrays, dann ist das schneller:
return
nachif(is_array...)
ist problematisch. Man kann nicht eine Gegenleistung für jedes element. Stattdessen sollten Sie nur zurück, wenn der Aufrufdeep_in_array
gibt true zurück.PHP nicht haben eine native
array_search_recursive()
Funktion, aber Sie können definieren:Ungetestet, aber Sie bekommen die Idee.