2017-03-09 4 views
0

私は、このJSONから特定のアイテムの最新の価格を取得したい:PHP JSON最新価格

{ 
    "status": 1, 
    "time": 1489069178, 
    "response": { 
     "A Brush with Death": { 
      "2017-01-09": { 
       "price": 32 
      }, 
      "2017-03-06": { 
       "price": 27 
      }, 
      "2017-03-07": { 
       "price": 28 
      } 
     }, 
     "A Carefully Wrapped Gift": { 
      "2017-01-14": { 
       "price": 361 
      }, 
      "2017-02-11": { 
       "price": 361 
      }, 
      "2017-03-08": { 
       "price": 340 
      } 
     }, 
     "A Color Similar to Slate": { 
      "2017-01-13": { 
       "price": 52 
      }, 
      "2017-02-16": { 
       "price": 115 
      } 
     }, 
     "A Deep Commitment to Purple": { 
      "2017-01-13": { 
       "price": 94 
      } 
     } 
    } 
} 

これは私の現在のコードです:

$json = json_decode($url); 
foreach($json->response as $item) 
{ 
    if($item->id == "A Brush with Death") 
    { 
     echo $item->price; 
    } 
} 

価格を取得することが可能です特定の項目のたとえば、私がA Carefully Wrapped Giftを要求した場合は、商品の最新価格が表示されます(2017-03-08の場合は340)。

+0

直接ここhere

でPHPの日付について学ぶのですか? '$ json-> response - > {A A '2017-01-14'} - > price' – bansi

答えて

2

子供のアイテムをループして日付を比較するだけです。あなたはすでにループについて知っています。コードサンプルは

$json = json_decode($url); 
foreach($json->response as $key=>$item) 
{ 
    if($key === "A Brush with Death") 
    { 
     $smallest_child = []; 
     foreach($item as $date=>$value){ 
      if(count($smallest_child) === 0){ 
       $smallest_child['date'] = $date; 
       $smallest_child['price'] = $value->price; 
      } 
      else{ 
       $date1 = new DateTime($smallest_child['date']); 
       $date2 = new DateTime($date); 
       if($date1 < $date2){ 
        $smallest_child['date'] = $date; 
        $smallest_child['price'] = $value->price; 
       } 
      } 

     } 
     echo $smallest_child['price']; 
    } 
} 
+0

日付は常に最後の子供がおそらくそれを取ってくるかもしれないが、いつも最後の子供になると思うよりはるかに安全です。 –

関連する問題