2016-08-17 3 views
2

Мой код:Что происходит, когда вы передаете неассоциативный массив в json_encode()?

<?php 
    $arr = array(); 
    array_push($arr,"One","Two","Three"); 
    print_r($arr); 
    echo '<br>'; 
    echo json_encode($arr); 
?> 

Как вы можете видеть, я передаю неассоциативный массив json_encode(). Выход я получаю

Array ([0] => Один [1] => Два [2] => Три)
[ "Один", "Два", "Три"]

Что такое вторая строка вывода? Если мы передаем ассоциативный массив json_encode(), то возвращается JSON Object, но этот массив, который возвращается, определенно не похож на объект JSON. Так что это?

Также существует способ преобразования неассоциативного массива в объект JSON с использованием json_encode()?

+2

Это простой числовой индексированный массив. –

+1

Это иногда вызывает проблему для некоторых парсеров JSON, но это объект JSON. Это представление массива, но некоторые парсеры ожидают, что корневой узел будет объектом типа '{}'. – Fma

ответ

2

Если вы пытаетесь получить его в надлежащем записи объекта, попробуйте это:

echo json_encode($arr,JSON_FORCE_OBJECT); 

Выход:

{"0":"One", "1":"Two", "2":"Three"} 

См json_encode() options

1

Привет Вы также можете попробовать этот

echo json_encode((object)$arr); 

Выход

{"0":"One","1":"Two","2":"Three"} 
Смежные вопросы