Как преобразовать PHP-массив в сложную JavaScript-структуру?

Привет всем! У меня возникла проблема с преобразованием данных из PHP в JavaScript. Мне нужно создать сложную структуру - массив объектов, содержащих массивы объектов. Вот что я пытаюсь сделать:

У меня есть PHP-массив с информацией о сотрудниках по офисам:

$officeData = [
  'Офис А' => [
    100 => 'Иван',
    101 => 'Мария'
  ],
  'Офис Б' => [
    102 => 'Петр',
    103 => 'Анна'
  ]
];

Я хочу преобразовать его в такую JavaScript-структуру:

[
  {
    name: 'Офис А',
    staff: [
      { id: 100, name: 'Иван' },
      { id: 101, name: 'Мария' }
    ]
  },
  {
    name: 'Офис Б',
    staff: [
      { id: 102, name: 'Петр' },
      { id: 103, name: 'Анна' }
    ]
  }
]

Я пробовал использовать вложенные циклы, но запутался в индексах. Как лучше всего сделать такое преобразование? Буду благодарен за любые идеи!

Можно использовать функцию json_encode() вместе с array_map(). Примерно так:

$result = array_map(function($office, $staff) {
return [
‘name’ => $office,
‘staff’ => array_map(function($id, $name) {
return [‘id’ => $id, ‘name’ => $name];
}, array_keys($staff), $staff)
];
}, array_keys($officeData), $officeData);

echo json_encode($result);

Это преобразует PHP-массив в нужный JSON-формат. Потом можно просто распарсить его в JavaScript.

Можно сделать это проще без сложных функций. Вот как я бы решил:

$result = ;
foreach ($officeData as $office => $employees) {
$staff = ;
foreach ($employees as $id => $name) {
$staff = [‘id’ => $id, ‘name’ => $name];
}
$result = [‘name’ => $office, ‘staff’ => $staff];
}

$json = json_encode($result);

Так код будет понятнее и легче поддерживать. После этого просто передаешь $json в JavaScript и парсишь там через JSON.parse().