2011-07-06 23 views
2

私はPHP配列についてできるだけ多くのことを掘り下げて学んできましたが、理解できない障害がありました。私のサンプルコードでPHP入れ子配列での検索

、私はこのようになります配列を持っている:

$array = array("fruit" => array("apple", "orange", "pear"), "veg" => array("carrot","celery")); 

さて、他の場所のコードで、私は、変数が求めているの値で$ myfavouriteitem

$myfavouriteitem = "apple"; 

$myfavouriteitem変数、値"fruit"を返したいと思います。

私はarray_search()関数をPHPで使用しようとしましたが、運が悪いわけではありません。私はarray_search()を、入れ子にされた配列を導入した時点まで使用することができました。

私が間違った角度から近づいている場合は、教えてください。私の最初の考えは、この情報を格納するためにデータベースを使用することでした(特に私が配列を初めて使うので)。しかし、それはこの特定のプロジェクトの問題です。これを念頭において、私のデータセットはすべて1対多の関係(複数の値を持つ1つのキー)を持ちます。

答えて

1
foreach ($array as $key => $val) { 
    if (in_array($myfavouriteitem, $val)) { 
     echo $key; 
     break; 
    } 
} 
+0

素敵です。ありがとう、ゼルクムズ。私はこれを私のために働かせることができました。私は、PHP配列を見直すのにもう少し時間を費やすつもりです。 – Andrew

1
echo key(array_filter($array, function ($values) use ($myfavouriteitem) { return in_array($myfavouriteitem, $values); })); 

しかしPHP 5.3を必要とし@zerkms溶液よりも遅くてもよいです。しかし、ねえ、それは機能的な1ライナーだ! ;)