как преобразовать JSON городов в массив php?

вот JSON https://api.hh.ru/areas/5
как сделать чтобы было так:
id области как ключ и у него ids массив числовой городов)

$areas = [
     '2121' => [3331, 3332, 3641 ...],//Винницкая область" область" с городами
     '2123' => [3634, 3604, 3605 ...],//"Волынская область" с городами
     '2126' => [3132, 3133, 2717 ...],//Днепропетровская область" с городами
     ....
     ....
]

спасибо!

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

Автор решения: InDevX
// записываем json в переменную
$json = file_get_contents('https://api.hh.ru/areas/5');
// json конвертируем в массив
$array = json_decode($json, 1);
// результирующий массив
$result = [];
// перебираем данные
foreach($array['areas'] as $region){
  // проверяем есть ли id области
  if ( !empty($region['id']) ) {
    // записываем в результирующий массив 
    // id области в кач-ве ключа и пустой массив - значение
    $result[$region['id']] = [];
    // проверяем есть ли у области районы
    if ( count($region['areas']) ) {
      // id области в кач-ве ключа и массив id регионов - значение
      $result[$region['id']] = array_column($region['areas'], 'id')
    }
  }
}
// выводим собранный ранее массив
var_dump($result);

// UPD: сохранение в файл
// полученный массив кодируем в json-строку
$jsonStr = json_encode($result);
// записываем json строку в файл regions.json
// можно указать путь к файлу '/var/www/files/regions.json' 
file_put_contents('regions.json', $jsonStr);

// вновь использовать файл:
$json = file_get_contents('regions.json');
$data = json_decode($json, 1);
→ Ссылка