0

以下は、mongo から取得したダンプです。オープニングのアーティスト名を取得する必要があります。

Array
(
[_id] => MongoId Object
    (
        [$id] => 51c9b63b6f7cb5f8229f27b7
    )

[s20] => Array
    (
        [opening] => Array
            (
                [artist] => Array
                    (
                        [name] => Jay Z
                    )

                [music] => Array
                    (
                        [name] => 99 problems
                    )

            )
)

だから、私は試しました:

foreach($mongo_dump as $key=>$value){
    echo "<pre>KEY: " . print_r($key["s20"]["opening"]["artist"]["name"]) . "</pre>";   // line # 16
    echo "<pre>VALUE: " . print_r($value) . "</pre>";
    echo "\n\n";
}

ただし、アーティスト名はわかりませんでした。次の PHP 警告を受け取りました。

PHP Warning:  Illegal string offset 's20' in /var/www/Code/analytics/fetch_top_5_opening_artists.php on line 16
4

2 に答える 2

2

ブレインが言及しているように、$key は配列ではありません。ダンプをトラバースする方法が正しくありません。$key は foreach ループのコンテキストで文字列になります。次のようにしてみてください。

if ($key == "s20") {
   echo "<pre>KEY: " . print_r($value["opening"]["artist"]["name"]) . "</pre>";
}
于 2013-06-25T17:20:54.120 に答える
0

値自体は array() であるため、ネストをセットアップしない限り、forloop は機能しません。これはネット for ループの例です。

foreach($mongo_dump as $key )
{

  { 
  foreach($key as $subkey) 
   {

    echo $subkey
    echo "\n\n";
 }

}

于 2013-06-25T17:30:20.593 に答える