使用PHP在mongodb中检索初始值

时间:2012-10-16 23:04:57

标签: php mongodb

在文档中,我想为我的收藏中的每个人存储唯一的电话号码,如下所示:

phones: {
        "5551112222": {
            extension: "101",
            type: "Mobile"
        },
        "8005554444": {
            extension: "225",
            type: "Work"
        },
    },
name: {
  first: "john",
  last: "smith"
}

我的PHP代码访问它,这让我可以访问扩展和类型,但是如何访问数字部分,因为$ d显然不起作用,因为它只返回整个数组?

  foreach ($cursor['phones'] as $d) {
   echo 'number: ' . $d . '<br />ext. ' . $d['extension'] . '<br />type: ' . $d['type'];

2 个答案:

答案 0 :(得分:1)

根据var_dump变量的$cursor['phones']输出:

  

array(2){[5551112222] =&gt; array(2){[“extension”] =&gt; string(3)“101”   [ “型”] =&GT; string(6)“Mobile”} [8005554444] =&gt;数组(2){   [ “扩展名”] =&GT; string(3)“225”[“type”] =&gt; string(4)“工作”}}

将您的代码更改为:

  foreach ($cursor['phones'] as $number => $extra) {
      echo 'number: ' . $number . '<br />ext. ' . $extra['extension'] . '<br />type: ' . $extra['type'];

原因很简单,当使用以下格式的foreach循环时:

foreach($arr as $d)

$d将包含该对的值。

从php手册: http://php.net/manual/en/control-structures.foreach.php

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

答案 1 :(得分:0)

$d将返回整个数组,foreach值代表数组,$d['extension']应该可以工作;可以?如果您正在尝试获取密钥,请将您的foreach更改为:

foreach($cursor['phones'] as $id => $d){

并使用$id var输出数字。