2017-01-07 3 views
1

Für einfache Arrays mit Schlüsselwertpaaren können wir den Schlüssel einfach anhand des Werts mithilfe von array_search() lokalisieren. Aber ich habe ein Array, in dem die Werte eine Zeichenfolge oder ein Array sein können, und müssen den Schlüssel finden, wo der Wert ein Array mit bestimmten Schlüsseln ist.Wie Schlüssel zu finden, wo Wert Array mit bestimmten Schlüssel mit PHP ist?

$myArray = array(
    0 => string_value, 
    1 => string_value2, 
    3 => array(
     'config' => array(
      'option1' => value1, 
      'option2' => value2, 
     ), 
     ), 
    4 => string_value3, 
); 

Ich brauche den Schlüssel für das Element zu finden, wo das Kind Array hat ein Schlüssel config - das heißt ich für Config suchen soll und 3 zurückzukehren.

Ich würde lieber nicht durch das Array fahren. Keine große Sache, wenn das die einzige Option ist. Aber ich frage mich, ob es einen eleganteren Weg gibt, diesen Schlüssel zu finden.

+0

Es gibt keinen anderen Weg, als jedes Element zu überprüfen. –

+0

Und Sie haben versucht, WAS? – RiggsFolly

+0

Wenn Sie bereits eine Möglichkeit haben, dies zu tun (wie durch alle Elemente zu iterieren) und sich fragen, ob es einen besseren Weg gibt, würde ich empfehlen, Ihre Arbeitslösung auf [Code Review] (http://codereview.stackexchange.com/) zu posten.) stattdessen. –

Antwort

1

Verwendung array_filter das Array mit Config zu filtern.

$o = array_filter($array, function($v){return !empty($v['config']) ? true : false;}); 
var_dump(array_keys($o)); 
+1

Dies war definitiv die eleganteste Lösung. – lcdservices

0

Sie sollten Elemente des Arrays iterieren und den Wert jedes Elements in der Schleife überprüfen. Überprüfen Sie, ob $item["config"] in Schleife gesetzt ist, geben Sie den Index des Schleifenelements zurück.

$index; 
foreach ($myArray as $key => $item){ 
    if (isset($item["config"])) 
     $index = $key; 
} 
echo $index; 

Siehe Ergebnis des Code in demo

+0

Und fügen Sie eine 'Pause' hinzu –

+0

@MagnusEriksson Wenn' $ item ['config'] 'allway Array ist, können Sie' is_array() 'verwenden, aber in Frage, beide funktionieren. – Mohammad

+1

Sie haben Recht. Ich habe die Frage falsch gelesen. Er will, dass '$ item' ein Array ist, nicht unbedingt $ item ['config']'. –

Verwandte Themen