从JSON文件创建foreach循环

时间:2015-11-01 12:09:04

标签: php json

我有一个json文件(items.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,我可以从所有“items”对象(例如“Item1”和“Item2”)获取适用于我的json文件格式的值。

3 个答案:

答案 0 :(得分:0)

请尝试这种方式

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


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


            echo ($v1->value);
        }
    }


}

答案 1 :(得分: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;
            }
        }
    }
}

答案 2 :(得分:0)

您的商品实际上属于&#34;响应&#34;对象,然后你也将items对象包装在一个数组中。如果您无法编辑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;
    }
}