Как перебрать все элементы массива JSON с помощью PHP?

Есть файл JSON:

{
  "section_1" : {
    "object_1" : {
      "name" : "Объект 1",
      "cost" : 100
    },
    "object_2" : {
      "name" : "Объект 2",
      "cost" : 200
    }
  },
  "section_2" : {
    "object_3" : {
      "name" : "Объект 3",
      "cost" : 300
    }
  }
}

Также PHP код:

$json = file_get_contents('./JSON_file.json');
$json = json_decode($json, true);

Подскажите, пожалуйста, как мне в PHP перебрать (желательно вывести на экран или в консоль) все name и cost? Полагаю, надо воспользоваться foreach, но никак не получается.


Ответы (2 шт):

Автор решения: ink Shio

Решение так себе. Не понятно что тебе нужно и как выводить.

$json = '{
  "section_1" : {
    "object_1" : {
      "name" : "Объект 1",
      "cost" : 100
    },
    "object_2" : {
      "name" : "Объект 2",
      "cost" : 200
    }
  },
  "section_2" : {
    "object_3" : {
      "name" : "Объект 3",
      "cost" : 300
    }
  }
}';

$decode = json_decode($json);

$newarray = [];
$index = 0;

foreach($decode as $key => $value ){
  foreach($value as $v) {
      $newarray[$index]['name'] = $v->name;
      $newarray[$index]['cost'] = $v->cost;
      $index++;
  }
}

//echo "<pre>";
//print_r($newarray);
//echo "</pre>";

foreach($newarray as $item) {
    echo "<div class='block'>";
    echo "<div>Имя: ".$item['name']."</div>";
    echo "<div>Цена: ".$item['cost']."</div>";
    echo "</div>";
}

пример тут

→ Ссылка
Автор решения: Kirill Peace

Разобрался, вот работающий код

foreach ($massive as $section => $objects){
    foreach ($objects as $id => $data){      
        if(array_key_exists($id, $countMas)){
            echo 'name: '.$data['name'];
            echo ' || count: '.$countMas[$id].'<br>';
        }
    }
}

Идея кода : https://ru.stackoverflow.com/users/199253/%d0%a1%d0%b5%d1%80%d0%b3%d0%b5%d0%b9-%d0%9c%d0%b8%d1%88%d0%b8%d0%bd

→ Ссылка