2015-11-01 78 views
1

我有一個JSON文件(items.json)foreach循環,看起來像以下:創建從JSON文件

{"response":{"success":1,"current_time":1446373851,"items":[ 
{ 
"Item1": {"last_updated":1446372015,"quantity":73,"value":1200}, 
"Item2": {"last_updated":1446372015,"quantity":40,"value":5297}, 
"Item3": {"last_updated":1446372015,"quantity":148,"value":2507} 
}]}} 

我試圖創建一個for循環從每個項目創建值的元素json:

$values = file_get_contents($siteurl.'/json/items.json'); 
$values = json_decode($values); 

foreach ($values->items as $key => $value) { 

if($value==Item1 && $value->value>1000){ 
<p><?php echo $value->value ; ?></p> 
} 
} 

在上面的例子中,我正在測試「items」(Item1)中的第一個值。我希望能夠爲這三個項目提供一個foreach。

但瀏覽器輸出以下錯誤「警告:爲foreach()提供的無效參數」。

如何正確地創建一個foreach在那裏我可以從所有的「項目」對象(如「項目1」和「項目2)對於我的JSON文件格式能夠得到的值。

+1

只是var_dump它並檢查結構? – rjdown

回答

0

你的項目實際上是「響應」對象中,然後你有伊特包含在數組中的ms對象。如果你是unabled編輯items.json那麼你可以做

$values = file_get_contents($siteurl.'/json/items.json'); 
$values = json_decode($values); 

foreach ($values->response->items as $key => $value) { 
    foreach($value as $key => $value) { 
     if($key == 'Item1' && $value->value > 1000) { 
      echo $value->value; 
     } 
    } 
} 

更好的解決方案卻是從items.json刪除陣列(方括號),因爲它似乎是多餘的,然後做:

$values = file_get_contents($siteurl.'/json/items.json'); 
$values = json_decode($values); 

foreach ($values->response->items as $key => $value) { 
    if($key == 'Item1' && $value->value > 1000) { 
     echo $value->value; 
    } 
} 
0

請嘗試這種方式

foreach ($values as $key => $value) { 


    foreach($value->items as $k => $v){ 
     foreach($v as $k1 => $v1){ 


      echo ($v1->value); 
     } 
    } 


} 
0

剛剛嘗試下面寫的是根據您的要求爲您提供精確的輸出碼。

$data = file_get_contents($siteurl.'/json/items.json'); 
$values = json_decode($data); 

foreach ($values as $key => $value) { 
    foreach($value->items as $key1 => $value1){ 
     foreach($value1 as $key2 => $value2){ 
      if($key2=="Item1" && $value2->value>1000){ 
       echo $value2->value; 
      } 
     } 
    } 
}