【问题标题】:Loop Nested Json for Specific Values为特定值循环嵌套 Json
【发布时间】:2019-08-21 22:30:00
【问题描述】:

我有一个来自 REST API 的嵌套 Json 数据。我有一个 foreach 循环试图获取所有“纸质”数据,但由于某种原因它不起作用。如何获取所有数据并显示在一个表格中?

我创建的 foreach 方法尝试遍历所有“纸张”数据并回显所有纸张数据的值。当我运行这个循环时,我得到了错误

警告:第 8 行存在非法字符串偏移 'paper'

这是 json 代码:

{
    "status":true,
    "message":"",
    "errors":[

    ],
    "paper":[
        {
            "id":"646473",
            "paperId":"2758110",
            "paperNumber":"2961517831"
        },
        {
            "id":"6536363",
            "paperId":"6376363",
            "paperNumber":"6373774733"
        }
    ]
}

我的 foreach 循环

<?php

 $url = '....';
 $data = file_get_contents($url);
 $characters = json_decode($data, true);

 foreach ($characters as $character) {
     echo 'Online: '. $character['paper'][0]['paperNumber'];
 }

预期结果

PaperNumber: 2961517831

PaperNumber: 6373774733

【问题讨论】:

    标签: php json foreach


    【解决方案1】:

    问题在于您的循环当前将对 JSON 中的每个项目进行操作,因此它将首先查看 status,然后查看 message。由于这些项目是简单的字符串,你会得到错误

    警告:第 8 行存在非法字符串偏移 'paper'

    相反,您需要循环遍历项目 paper 作为起点,而不是稍后尝试提取它们(使用 $characters['paper'])...

    foreach ($characters['paper'] as $character) {
        echo 'Online: '. $character['paperNumber'];
    }
    

    【讨论】:

    • 非常感谢奈杰尔。这既简单又干净。
    • 你好 @Nigel 我如何返回 paperID 的总和。
    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2021-04-10
    • 1970-01-01
    • 2014-08-19
    相关资源
    最近更新 更多