2017-01-07 11 views
1

キー値のペアを持つ単純な配列の場合、array_search()を使用して値に基づいてキーを簡単に見つけることができます。しかし、私は値が文字列または配列であり、その値が特定のキーを持つ配列であるところのキーを見つける必要がある配列を持っています。すなわち、私は設定を検索し、3を返す必要があります -phpを使用して特定のキーで値が配列であるキーを見つける方法?

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

は私が子供の配列はキーconfig持つ要素のキーを見つける必要があります。

私はアレイを循環したくないです。それが唯一の選択肢であれば大したことではありません。しかし、その鍵を見つけるより洗練された方法があるのだろうかと思います。

+0

他の方法はありませんが、すべての項目を確認してください。 –

+0

あなたは何を試しましたか? – RiggsFolly

+0

これを行う方法(すべての要素を反復する方法など)があり、より良い方法があるかどうか疑問に思うなら、[Code Review](http://codereview.stackexchange.com/)で作業ソリューションを投稿することをお勧めします)代わりに。 –

答えて

1

使用array_filterのコードの参照結果。

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

これは間違いなく最も洗練されたソリューションでした。 – lcdservices

0

ループの各項目の配列とチェック値の項目を繰り返し処理する必要があります。ループ内に$item["config"]が設定されていることを確認し、ループ項目のインデックスを返します。

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

設定でアレイをフィルタリングするdemo

+0

そして、 'break'を追加してください。 –

+0

@MagnusEriksson' $ item ['config'] 'all 'が配列であれば、' is_array() 'を使うことができますが、どちらも問題ありません。 – Mohammad

+1

あなたは正しいです。私はその質問を誤解した。彼は '$ item'を必ず' $ item ['config'] 'というより配列にしたいと考えています。 –

関連する問題