PHP mehrdimensionale Array-Suche nach Wert
Ich habe ein Array, in dem ich die uid
suchen und den Schlüssel des Arrays erhalten möchte.
Beispiele
Angenommen, wir haben das folgende 2-dimensionale Array:
$userdb = array(
array(
'uid' => '100',
'name' => 'Sandra Shush',
'pic_square' => 'urlof100'
),
array(
'uid' => '5465',
'name' => 'Stefanie Mcmohn',
'pic_square' => 'urlof100'
),
array(
'uid' => '40489',
'name' => 'Michael',
'pic_square' => 'urlof40489'
)
);
Der Funktionsaufruf search_by_uid(100)
(uid des ersten Benutzers) sollte 0
zurückgeben.
Der Funktionsaufruf search_by_uid(40489)
sollte 2
zurückgeben.
Ich habe versucht, Schleifen zu bilden, aber ich möchte einen schneller ausführbaren Code.
291
3
Dies wird funktionieren. Sie sollten es so nennen:
Es ist wichtig zu wissen, dass bei der Verwendung des Operators
===
die verglichenen Typen genau gleich sein müssen, in diesem Beispiel müssen Sie nachstring
suchen oder einfach==
statt===
verwenden.Basierend auf der Antwort von angoru. In neueren Versionen von PHP (
>= 5.5.0
) können Sie One-Liner verwenden.Hier ist die Dokumentation: http://php.net/manual/en/function.array-column.php.
Aufbauend auf Jakub's ausgezeichnete Antwort, hier ist eine allgemeinere Suche, die es erlaubt, den Schlüssel zu spezifizieren (nicht nur für uid):
Verwendung:
$results = searcharray('searchvalue', searchkey, $array);
Ich weiß, dass dies bereits beantwortet wurde, aber ich habe dies verwendet und es ein wenig mehr in meinem Code erweitert, so dass Sie nicht nur nach der uid suchen müssen. Ich möchte es nur für alle anderen teilen, die diese Funktionalität benötigen.
Hier's mein Beispiel und bitte beachten Sie, dass dies meine erste Antwort ist. Ich habe das param-Array herausgenommen, weil ich nur ein bestimmtes Array suchen musste, aber man könnte es leicht hinzufügen. Ich wollte im Wesentlichen durch mehr als nur die uid zu suchen.
Außerdem kann es in meiner Situation mehrere Schlüssel geben, die als Ergebnis der Suche nach anderen Feldern zurückgegeben werden, die möglicherweise nicht eindeutig sind.
Später habe ich dies dann so geschrieben, dass ich nach einem anderen Wert und einem anderen assoziativen Schlüssel suchen kann. Mit meinem ersten Beispiel können Sie also nach einem Wert in einem bestimmten assoziativen Schlüssel suchen und alle Übereinstimmungen zurückgeben.
Das zweite Beispiel zeigt Ihnen, wo ein Wert ('Taylor') in einem bestimmten assoziativen Schlüssel (vorname) und ein anderer Wert (wahr) in einem anderen assoziativen Schlüssel (beschäftigt) gefunden wird, und gibt alle Übereinstimmungen zurück (Schlüssel, in denen Personen mit vorname 'Taylor' UND beschäftigt sind).
Verwendung der Funktion
Ergebnis