无法从Mongo转储中获取数据

时间:2013-06-25 17:08:42

标签: php arrays mongodb

下面是我从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

2 个答案:

答案 0 :(得分:2)

正如Blaine所提到的,$ key不是一个数组。遍历转储的方式不正确。 $ key成为foreach循环上下文中的字符串。尝试做这样的事情:

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

答案 1 :(得分:0)

值本身就是array()所以除非你设置嵌套,否则你的forloop不能正常工作。这是neted for循环的例子。

foreach($mongo_dump as $key )
{

  { 
  foreach($key as $subkey) 
   {

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

}