繁体   English   中英

PHP 特定 JSON 数组嵌套级别混淆

[英]PHP Specific JSON Array nesting level Confusion

我想知道是否有人可以帮忙。 我有一个来自 API 的 JSON 提要,但我永远无法弄清楚获取所需信息的级别?

JSON 在下面

{
  "sourceId": "1234",
  "sourceType": "MONITOR",
  "searchMeta": {
    "startTimestamp": 1462361513,
    "endTimestamp": 1462508560,
    "maxResults": 10000,
    "metricType": [
      "clients"
    ],
    "family": [
      "Product"
    ],
    "metricsInterval": "M5"
  },
  "clients": {
    "One": [
      {
        "timestamp": 1462361400,
        "avg": 2,
        "min": 1,
        "max": 3,
        "probes": 6,
        "samples": 3,
        "sources": [
          "123",
          "234",
          "345",
          "456",
          "567",
          "789"
        ]
      },

我想将 Probes 值和 Samples 值放入一个变量中

foreach($json['clients'] as $range => $product){

echo $product['timestamp']." Probes: ".$product['probes']." Samples: ".$product['samples']." <br>";

}

提前致谢

我假设您将拥有一系列客户(因此是循环)。 因此,您还需要循环每个客户端,因为它是一个object array

如果你把它形象化,它看起来像这样:

CLIENTS = ARRAY(
    1 => ARRAY( OBJECT{} ), // you want the OBJECT{}
    ....etc
)

因此,下面的循环将为您提供。

$data = json_decode($json, TRUE);

foreach($data['clients'] as $range => $product) {
    foreach($product as $element){
        echo $element['timestamp']." Probes: ".$element['probes']." Samples: ".$element['samples']." <br>";    
    }
}

示例/演示

返回以下内容:

1462361400 Probes: 6 Samples: 3 <br>

OP的要求:

我想将 Probes 值和 Samples 值放入一个变量中

简单的只是将您的 json 文件命名为$json

$arr = json_decode($json);

echo $samples = $arr->clients->One[0]->samples; //3
echo $probes = $arr->clients->One[0]->probes; //6

尝试这个。

$data = json_decode($json,true);
foreach($data['clients'] as $client){

echo $client['timestamp']." Probes: ".$client['probes']." Samples: ".$client['samples']." <br>";

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM