|
Добавить массив в массив с ключом |
☑ |
0
antihacker
08.04.19
✎
10:40
|
Всем привет !
Вот код
$ary_main = array();
$ary_sub1 = array();
$ary_sub2 = array();
$ary_sub2["id"] = 'HONDA1';
$ary_sub1[0] = ($ary_sub2);
$ary_sub2 = array();
$ary_sub2["id"] = 'HONDA2';
$ary_sub1[1] = ($ary_sub2);
array_push($ary_main, $ary_sub1);
array_push($ary_main, $ary_sub1);
echo json_encode($ary_main);
Результат - [[{"id":"HONDA1"},{"id":"HONDA2"}],[{"id":"HONDA1"},{"id":"HONDA2"}]];
Мне нужен - ["1":[{"id":"HONDA1"},{"id":"HONDA2"}],"2":[{"id":"HONDA1"},{"id":"HONDA2"}]]
Что бы можно было сортировать на стороне 1С
И вообще правильный ли формат JSON - а яотправляю ? Сможет ли 1С прочесть ?
|
|
1
antihacker
08.04.19
✎
10:40
|
Ой опечатка в ключах
Мне нужен - ["0":[{"id":"HONDA1"},{"id":"HONDA2"}],"1":[{"id":"HONDA1"},{"id":"HONDA2"}]]
|
|
2
Asmody
08.04.19
✎
10:45
|
Вот это ["1":[{"id":"HONDA1"},{"id":"HONDA2"}],"2":[{"id":"HONDA1"},{"id":"HONDA2"}]] - не JSON
|
|
3
antihacker
08.04.19
✎
10:48
|
$ary_main[0]['1'] = ($ary_sub1);
$ary_main[1]['2'] = ($ary_sub1);
Вот исправил. Получил - [{"1":[{"id":"HONDA1"},{"id":"HONDA2"}]},{"2":[{"id":"HONDA1"},{"id":"HONDA2"}]}]
Это что ?
|
|
4
Asmody
08.04.19
✎
10:50
|
(3) это JSON, но у тебя получился массив из одного объекта, в котором два свойства типа массив объектов.
|
|
5
Вафель
08.04.19
✎
10:51
|
проверь любым онлайн валидатором
|
|
6
Asmody
08.04.19
✎
10:53
|
валидатор JSON в любом браузере по кнопке F12
|
|
7
antihacker
08.04.19
✎
10:55
|
Asmody, не очень понял
|
|
8
Asmody
08.04.19
✎
10:59
|
нажимаешь F12, переходишь на закладку Консоль, пишешь
JSON.parse('<тут вставляешь свой JSON>')
нажимаешь Enter. В консоли должен появиться Array, раскрываешь, смотришь структуру, сравниваешь
|
|
9
Ванпанчмен
08.04.19
✎
16:49
|
(0) Так нельзя как ты хочешь. Суть JSON-массива в том, что у него нет определенного порядка жестко привязанного к элементам массива. Если хочешь чтобы были ключи, то это уже будет не массив, а объект.
Запомни основной принцип:
Доступ к элементам массива происходит через перебор в цикле. Доступ к элементам объекта происходит через прямое обращение через ключ.
Если приходится обращаться к элементам массива по ключу, это явный признак что ты его используешь не по назначению.
Так что или используй объект вместо массива, или не используй ключи.
|
|
10
dezss
08.04.19
✎
17:01
|
(4) У него получился массив из 2-х объектов, а не из одного.
(9) Соглашусь, но не до конца. Он делает массив объектов, в котором есть поле для сортировки, кривовато делает)))
(3) Единственное, тебе придется десериализовывать его в соответствие, а не в структуру, так как у структуры не может быть ключей, начинающихся с цифры. И сортировать все равно не сможешь. Чтобы сортировать, тебе надо в объект добавить поле "sort", например. И в него уже пихать значение для сортировки)
|
|
11
Ванпанчмен
08.04.19
✎
17:15
|
(10) Ну да. Вот так можно было бы сделать:
[{"sort":"0","sub1":[{"id":"HONDA1"},{"id":"HONDA2"}]},{"sort":"1", sub1:[{"id":"HONDA1"},{"id":"HONDA2"}]}]
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший