Я пытаюсь проанализировать JSON с помощью PHP, затем распечатать имя родительского свойства, а затем элементы.
Вот JSON
{
"Specials": [{
"name": "Shirt","dsc":"cotton shirt",
"vari": [{ "name":"red", "price":25.80 },{ "name":"green", "price":26.50 }]
},
{
"name":"shorts","dsc":"one size","price":15.99
},
{
"name":"shoes","dsc":"black shoes",
"vari": [{ "name":"capri", "price":37.80 },{ "name":"shooters", "price":28.50 }]
}],
"Jumpers": [{
"name": "Glax Red","dsc":"thin lightweight","price":22.99
},
{
"name": "Bazoo Care","dsc":"ideal for winter","price":32.99
}]
}
Я использовал следующее для его повторения:
$readjson = file_get_contents('products.json') ;
$data = json_decode($readjson);
foreach ($data as $products) {
foreach ($products as $product) {
echo $product->name."<br>".$product->dsc."<br>";
if (isset($product->price))
{
echo " ".$product->price."<br>";
}
else {
foreach ($product->vari as $var) {
echo $var->name." ".$var->price."<br/>";
}
}
Вывод:
футболка
хлопковая рубашка
красный 25,8
зеленый 26,5
шорты
один размер
15,99
...
Я хотел бы сначала напечатать название свойства, а затем показать элементы, которые в нем находятся, оно должно выглядеть так:
Скидка
рубашка
хлопковая рубашка
красный 25,8
зеленый 26,5
шорты
один размер
15,99
...
Перемычки
Glax Red
тонкий легкий
22,99
Bazoo Care
идеально подходит для зимы
32,99
Я добавил это как внешний вложенный цикл:
foreach ($data as $products => $value) {
echo $products;}
Но это возвращает только первое имя объекта. Как я могу достичь вышеуказанного?
Вот визуализация JSON.