循环嵌套Json以获取特定值

时间:2019-03-31 17:31:34

标签: php json foreach

我有一个来自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

1 个答案:

答案 0 :(得分:0)

问题是您的循环当前将在JSON中的每个项目上运行,因此它将首先查看status,然后查看message。由于这些项目是简单的字符串,因此会出现错误

  

警告:第8行上的字符串偏移量'paper'非法

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

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