【问题标题】:Access JSON values in PHP (one part is working, other one not)在 PHP 中访问 JSON 值(一部分有效,另一部分无效)
【发布时间】:2022-07-01 01:09:06
【问题描述】:

我有这个 JSON:

[
{
    "Ticket": {
        "TicketNo": 1920,
        "Creation": "21.03.2016 05:45:00",
        "FailureDescription": "Error 46",
    },
    "Measures": [
        {
            "StartTime": "2017-03-17T05:45:00",
            "Description": "Long description",
        }
    ]
},
{
    "Ticket": {
        "TicketNo": 1005,
...

这是我用来显示数据的代码:

$file = file_get_contents($remote_url, false, $context);
$myData = json_decode($file);

foreach($myData as $myItem) {
   echo "<tr><td>$myItem->TicketNo</td><td>CLOSED</td><td>$myItem->Creation</td><td>$myItem->FailureDescription</td></tr>";
   echo "<tr><th>Start</th><th>Measure</th></tr>";

   foreach ($myItem->Measures as $wm) {
      echo "<tr><td>$wm->StartTime</td><td>$wm->Description</td></tr>";
   }
}

问题是,'Ticket' 部分根本没有显示,但 'Measures' 部分运行良好。我认为这是因为 'Ticket' 后缺少 [ ],但我迫切希望让它发挥作用。

JSON 有效并且 var_dump($myData) 返回所有数据。我尝试使用 'json_decode($file, true)' 解码 JSON 以获取数组并使用 $mydata['Ticket']['TicketNo'] 但它也不起作用。我在第一个 foreach 中尝试了 '$myData->Ticket' 没有效果。我也在这里阅读了所有提供的类似问题,但我没有找到解决方案。谢谢

【问题讨论】:

    标签: php json


    【解决方案1】:

    这里有两个错误。

    首先,您需要仔细阅读 JSON 的结构以了解要访问的内容。 JSON 有:

    • 一个数组[,您正在循环使用foreach($myData as $myItem) {
    • 该数组中的每个项目都有两个键:“Ticket”和“Measures”;以$myItem-&gt;Ticket$myItem-&gt;Measures 访问它们
    • 每个“Ticket”都有键“TicketNo”、“Creation”和“FailureDescription”。这些不是$myItem 的键,它们是$myItem-&gt;Ticket 的子键;换句话说,$myItem-&gt;Ticket-&gt;TicketNo$myItem-&gt;Ticket-&gt;Creation$myItem-&gt;Ticket-&gt;FailureDescription

    您的第二个问题是,当您在双引号字符串中写入$myItem-&gt;Ticket-&gt;TicketNo 时,例如"hello $myItem-&gt;Ticket-&gt;TicketNo world",PHP 认为您需要变量$myItem-&gt;Ticket,后跟文字文本"-&gt;TicketNo world"。要解决这个问题,请将变量部分放在花括号中:"hello {$myItem-&gt;Ticket-&gt;TicketNo} world"

    所以echo 行应该是:

    echo "<tr><td>{$myItem->Ticket->TicketNo}</td><td>CLOSED</td><td>{$myItem->Ticket->Creation}</td><td>{$myItem->Ticket->FailureDescription}</td></tr>";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 2018-11-20
      • 1970-01-01
      • 1970-01-01
      • 2014-07-06
      • 2019-12-13
      • 2021-06-16
      相关资源
      最近更新 更多