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

array(2) { [5551112222]=> array(2) { ["extension"]=> string(3) "101" ["type"]=> string(6) "Mobile" } [8005554444]=> array (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 に答える