У меня есть 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() в".
Как правильно создать foreach, где я могу получить значения из всех объектов "items" (ex "Item1" и "Item2), которые работают для моего формата json файла.
Ваши объекты на самом деле находятся в объекте "ответ", а затем у вас есть объект item, завернутый в массив. Если вы не можете редактировать 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;
}
}
Пожалуйста, попробуйте этот путь
foreach ($values as $key => $value) {
foreach($value->items as $k => $v){
foreach($v as $k1 => $v1){
echo ($v1->value);
}
}
}
Просто попробуйте ниже код, который написан для обеспечения точного вывода в соответствии с вашим требованием.
$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;
}
}
}
}