2013-06-25 109 views
0

下面是我從mongo獲得的轉儲。我需要取得開幕藝人的名字。無法從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 
+1

'$ key'是不適合的轉儲各項指標的數組 – Don

回答

2

正如布萊恩提到的,$ key不是數組。您正在遍歷轉儲的方式不正確。 $ key在foreach循環的上下文中變成一個字符串。嘗試做這樣的事情:

if ($key == "s20") { 
    echo "<pre>KEY: " . print_r($value["opening"]["artist"]["name"]) . "</pre>"; 
} 
0

該值本身是數組(),所以你的forloop不會工作,除非你安裝嵌套。這裏是neted for循環的例子。

foreach($mongo_dump as $key) 
{ 

    { 
    foreach($key as $subkey) 
    { 

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

}