我有一个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文件格式的值。
答案 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;
}
}