【问题标题】:Loop json array in php在php中循环json数组
【发布时间】:2014-05-18 23:28:39
【问题描述】:

我知道它已经被问过很多次了,我已经解决了 15 到 20 个问题,试图弄清楚如何让它发挥作用。

JSON

{"menu": {
    "title":"Title One",
    "link":"Link One",
    "title":"Title Two",
    "link":"Link Two"}
}

PHP

$string = file_get_contents("test.json");
$json_a = json_decode($string,true);

foreach($json_a['menu'] as $key => $value) {
  echo $key . ": " . $value . "<br />";
}

目前只显示

title: Title Two
link: Link Two

相对

title: Title One
link: Link One
title: Title Two
link: Link Two

我认为$json_a[menu] 不需要撇号,因为$json_a 不是函数,我也是正确的吗?无论有没有都可以。

提前致谢。

【问题讨论】:

  • 数组中不能有多个具有相同键的条目。虽然 JSON 可能允许它,但当它被 PHP 解析时,键值对的最后一个定义获胜。看起来 menu 应该是一个对象数组。
  • 如果你做 json_decode(),它也只会是多个键中的一个。
  • 对象属性是唯一的
  • 一个小建议:如果你不确定一个对象或数组的结构,用 print '
    ' 输出它; print_r($json_a);打印'
    ';

标签: php arrays json loops foreach


【解决方案1】:

数组中不能有多个具有相同键的条目。虽然 JSON 可能允许它,但当它被 PHP 解析时,键值对的最后一个定义获胜。

看起来menu 应该是一个对象数组:

{
  "menu": [{
    "title":"Title One",
    "link":"Link One"
  }, {
    "title":"Title Two",
    "link":"Link Two"
  }]
}

PHP

foreach($json_a['menu'] as $value) {
  echo $value['title'] . ": " . $value['link'] . "<br />";
}

【讨论】:

  • 明白了,谢谢菲利克斯。计时器到时将标记为已回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
  • 2013-02-06
  • 2021-10-16
相关资源
最近更新 更多