0

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

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'];
4

2 回答 2

1

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

数组(2){[5551112222]=>数组(2){[“扩展”]=>字符串(3)“101”[“类型”]=>字符串(6)“移动”}[8005554444]=>数组(2) { ["extension"]=> string(3) "225" ["type"]=> string(4) "Work" } }

将您的代码更改为:

  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
于 2012-10-16T23:22:57.270 回答
0

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

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

并使用$idvar 输出数字。

于 2012-10-16T23:24:28.443 回答