在json数组上嵌套foreach循环,将索引映射到值

时间:2019-01-15 15:56:09

标签: php arrays json foreach

我目前有一个解码的JSON数组

+"productINF": {#1260 ▼
  +"product": {#1011 ▼
    +"productCode": "123"
    +"productType": {#999 ▼
      +"count": 3.0
      +"desc": "Block"
    }
  }
}
+"price": {#1267 ▼
  +"02": "470.00"
}

我正在执行多个foreach循环以从我需要的每个级别获取信息。 问题是我在同一级别上有两件事,每件事都有自己的数组:productINF和price。

第一个具有产品信息,第二个具有价格信息。问题在于,在当前的JSON数组中,价格为"02" : "470.00",但有时可能会有多个价格,如下所示:

+"01": "40.00",
+"05": "240.00"

我永远都不知道键是什么,但是我只想确保foreach项目将第二个值称为价格。这是我现在循环播放的方式,但是我不知道如何将价格正确设置为一个值:

 foreach($category->skus as $sku){
      foreach($sku->productINF as $info){
          $productCode = $info->productCode;

          foreach($info->productType as $type){
              $count = $type->count;
              $desc = $type->desc;
          }
      }
      foreach ($sku->price as $price) {
         //Not sure how to access price here
      }
  }

1 个答案:

答案 0 :(得分:1)

foreach将对象与数组视为相同。

这应该做...

foreach ($sku->price as $price) {
    foreach ($price as $id => $amount) {
        echo $id , ' ' , $amount , "\n";
    }
}