2016-11-04 1 views
3

Ich suche auf Google viel, aber ich habe keine Antwort gefunden (oder ich habe es nicht verstanden).array_search mehrdimensionales Array mit mehreren Wert

Hier ist mein Problem: Ich möchte den Schlüssel in einem mehrdimensionalen Array mit zwei Wert in der Bedingung suchen.

Ich weiß, wie mit einer Bedingung in einem mutlidim Array suchen:

$key = array_search($journee, array_column($data,'journee')); 

Hier mein Array ist:

Array 
(
    [0] => Array 
     (
      [pseudo] => titi 
      [journee] => 11 
      [pts] => 3 
     ) 

    ... 
    [10] => Array 
     (
      [pseudo] => test 
      [journee] => 10 
      [pts] => 6 
     ) 

    [11] => Array 
     (
      [pseudo] => test 
      [journee] => 11 
      [pts] => 4 
     ) 

) 

Wenn ich 11 in array_search für die Kolonne journee setzen Juste, wird es zurück 0.

Ich möchte pseudo in der Suchbedingung hinzufügen.

Ist es mit einer einfachen Funktion möglich?
Oder muss ich array_keys() verwenden? (Ist es mit MultiDim Array arbeiten?)

Vielen Dank im Voraus für jede Hilfe,

Mit freundlichen Grüßen.

+0

Mit einem Sim Funktion ist nicht möglich. Mit der Kombination - es ist. –

+0

Sie wollen also in JSON suchen, indem Sie beide Bedingungen verwenden, um 'journee' und' pseudo' zu finden? –

Antwort

3

Mit einer einfachen Funktion ist es nicht möglich.

Hier ist eine Lösung mit zwei:

$search = ['pseudo' => 'test', 'journee' => 10]; 
$keys = array_keys(
    array_filter(
     $array, 
     function ($v) use ($search) { return $v['pseudo'] == $search['pseudo'] && $v['journee'] == $search['journee']; } 
    ) 
); 
$key = $keys[0]; 

Aber wenn Sie ein Schlüssel finden muss ich nur raten foreach & break, zu verwenden, da Sie von iterieren müssen nicht alle Array Werte (was passiert mit der Verwendung von array_filter) und stoppen sofort, wenn bestimmte Daten gefunden werden:

+0

Auch wenn er nach dem ersten Match nicht zu brechen braucht, ist eine einfache Schleife besser. Die Antwort wird also auf _use eine einfache loop_ = –

+0

reduziert Erklären Sie, warum einfache Schleife besser ist. –

+0

1) Schleife ist besser lesbar, 2) Schleife ist ein einzelnes Konstrukt, während die frühere Lösung einen Lambda und zwei Funktionsaufrufe verwendet, alle in einem komplizierten Ausdruck verbunden; Daher sollte Schleife produktiver sein –