tom87
24.Апрель.2025 04:37:01
1
Привет всем! У меня возникла проблема с преобразованием данных из 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: 'Анна' }
]
}
]
Я пробовал использовать вложенные циклы, но запутался в индексах. Как лучше всего сделать такое преобразование? Буду благодарен за любые идеи!
alexk
01.Май.2025 22:31:08
2
Можно использовать функцию 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().