|
Добавить массив в массив с ключом | ☑ | ||
---|---|---|---|---|
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"}]}] |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |