Вход | Регистрация
 

Добавить массив в массив с ключом

Добавить массив в массив с ключом
Я
   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С прочесть ?
 
 
   antihacker
 
1 - 08.04.19 - 10:40
Ой опечатка в ключах

Мне нужен - ["0":[{"id":"HONDA1"},{"id":"HONDA2"}],"1":[{"id":"HONDA1"},{"id":"HONDA2"}]]
   Asmody
 
2 - 08.04.19 - 10:45
Вот это ["1":[{"id":"HONDA1"},{"id":"HONDA2"}],"2":[{"id":"HONDA1"},{"id":"HONDA2"}]]  - не JSON
   antihacker
 
3 - 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"}]}]
Это что ?
   Asmody
 
4 - 08.04.19 - 10:50
(3) это JSON, но у тебя получился массив из одного объекта, в котором два свойства типа массив объектов.
   Вафель
 
5 - 08.04.19 - 10:51
проверь любым онлайн валидатором
   Asmody
 
6 - 08.04.19 - 10:53
валидатор JSON в любом браузере по кнопке F12
   antihacker
 
7 - 08.04.19 - 10:55
Asmody, не очень понял
   Asmody
 
8 - 08.04.19 - 10:59
нажимаешь F12, переходишь на закладку Консоль, пишешь

JSON.parse('<тут вставляешь свой JSON>')

нажимаешь Enter. В консоли должен появиться Array, раскрываешь, смотришь структуру, сравниваешь
   Ванпанчмен
 
9 - 08.04.19 - 16:49
(0) Так нельзя как ты хочешь. Суть JSON-массива в том, что у него нет определенного порядка жестко привязанного к элементам массива. Если хочешь чтобы были ключи, то это уже будет не массив, а объект.
Запомни основной принцип:
Доступ к элементам массива происходит через перебор в цикле. Доступ к элементам объекта происходит через прямое обращение через ключ.
Если приходится обращаться к элементам массива по ключу, это явный признак что ты его используешь не по назначению.

Так что или используй объект вместо массива, или не используй ключи.
   dezss
 
10 - 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"}]}]

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует