2015-11-01 120 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; 
      } 
     } 
    } 
}