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