2013-06-25 110 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"; 
} 

}