由于字段不同,在PHP中显示JSON数据时出错


Error when displaying JSON data in PHP due to different fields

我试图从JSON API提要中显示PHP列表,并且字段不断从一个数组更改到下一个。

有没有人能帮我解决这个问题

Json脚本,您将看到Json具有uniqueId和mac字段,这些字段在clientId

下的每个实例中都会更改。
    {
  "searchMeta": {
    "maxResults": 100,
    "sourceId": "6e5c1d5d-d84b-4b64-9d2c-a32b8c9f7174",
    "iso8601Timestamps": true,
    "sourceType": "VENUE",
    "endTimestamp": 1444952156,
    "startTimestamp": 1444952056
  },
  "ranges": [
    {
      "clients": [
        {
          "clientId": {
            "mac": "6c:19:8f:bf:47:e9"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -93.3
            }
          ]
        },
        {
          "clientId": {
            "uniqueId": "Kn04"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -75.3
            }
          ]
        },
        {
          "clientId": {
            "mac": "58:6d:8f:75:95:0e"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -86.2
            }
          ]
        },
        {
          "clientId": {
            "mac": "44:d9:e7:21:e0:de"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -25.8
            }
          ]
        },
        {
          "clientId": {
            "mac": "68:72:51:10:e7:26"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -47
            }
          ]
        },
        {
          "clientId": {
            "mac": "68:72:51:10:e7:29"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -72.3
            }
          ]
        },
        {
          "clientId": {
            "mac": "a4:ee:57:2e:ac:bd"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -95
            }
          ]
        },
        {
          "clientId": {
            "uniqueId": "CQos"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -64.1
            }
          ]
        },
        {
          "clientId": {
            "mac": "86:8f:c2:8f:c3:20"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -68.4
            }
          ]
        },
        {
          "clientId": {
            "mac": "32:91:8f:6c:2e:f4"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -87.7
            }
          ]
        },
        {
          "clientId": {
            "mac": "30:91:8f:6c:2e:f3"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -86.9
            }
          ]
        },
        {
          "clientId": {
            "mac": "30:91:8f:43:ca:49"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -87
            }
          ]
        },
        {
          "clientId": {
            "mac": "1d:8b:90:7b:20:9c"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -102.5
            }
          ]
        },
        {
          "clientId": {
            "mac": "38:2c:4a:5c:b6:a0"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -76.7
            }
          ]
        },
        {
          "clientId": {
            "uniqueId": "ECgg"
          },
          "rssis": [
            {
              "sourceId": "zR1L3",
              "value": -59.5
            }
          ]
        }
      ],
      "timestamp": "2015-10-15T23:35:00+00:00"
    }
  ]
}
然后读取和显示它的代码是
    $json = json_decode($response,true);
    $output = "<ul>";
    foreach($json['ranges'] as $range){
        foreach($range['clients'] as $client)
        foreach($client['clientId'] as $client1)
            foreach($client['rssis'] as $data){
        $output .= "<h4>".$range['timestamp']."</h4>";
        $output .= "<li>Source ID: ".$data["sourceId"]."</li>";
        $output .= "<li>Value in dB: ".$data["value"]."</li>";
    }}
    $output .= "</ul>";

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $output;
}
然后在网页上显示

,而不包含唯一标识符或mac字段。我需要显示其中任何一个的行,好吗?

2015 - 10 - 13 - t04:26:00 + 0

源ID: zR1L3 dB值:-89.2

2015 - 10 - 13 - t04:26:00 + 0

源ID: zR1L3 dB值:-98.8

2015 - 10 - 13 - t04:26:00 + 0

源ID: zR1L3 dB值:-74.6

谢谢你的回答,现在我得到了以下内容。

2015 - 10 - 16 - t10:11:00 + 0

2015 - 10 - 16 - t10:11:00 + 0

2015 - 10 - 16 - t10:11:00 + 0

2015 - 10 - 16 - t10:11:00 + 0

2015 - 10 - 16 - t10:11:00 + 0

2015 - 10 - 16 - t10:11:00 + 0

2015 - 10 - 16 - t10:11:00 + 0

2015 - 10 - 16 - t10:11:00 + 0

2015 - 10 - 16 - t10:11:00 + 0

2015 - 10 - 16 - t10:11:00 + 0

2015 - 10 - 16 - t10:11:00 + 0

2015 - 10 - 16 - t10:11:00 + 0

2015 - 10 - 16 - t10:11:00 + 0

mac: f4:b7:e2:31:65:8f

sourceId: zR1L3

value: -95

2015 - 10 - 16 - t10:12:00 + 0

2015 - 10 - 16 - t10:12:00 + 0

2015 - 10 - 16 - t10:12:00 + 0

2015 - 10 - 16 - t10:12:00 + 0

2015 - 10 - 16 - t10:12:00 + 0

mac: f4:b7:e2:31:65:8f

sourceId: zR1L3

value: -95

2015 - 10 - 16 - t10:13:00 + 0

不明白你到底在问什么。如果我理解正确,你想从json编码的数组访问几个字段。

试试这个

$json = json_decode($response,true);
foreach($json->ranges as $row){
        foreach($row->clients as $row1)
            echo $row->timestamp."<br>";
            foreach($row1->clientId as $key => $val){
                echo $key." ==== ". $val."<br>";
            }
            foreach($row1->rssis as $row2){
                foreach($row2 as $key => $val){
                    echo $key." ==== ". $val."<br>";
                }
            }     
    }

我无法从你发布的json数组中获得时间戳。