PHP json_decode возвращает пустой массив

Я просто тестирую этот образец из php doc ( http://au2.php.net/manual/en/function.jsondecode.php )

вот мой код:

<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; echo json_decode($json, true), '<br />';?> 

Но он просто возвращает массив EMPTY.

Не знаю, почему … Я искал, но решения не найдено.

Пожалуйста помоги!

вы не должны использовать эхо, потому что это массив. используйте print_r или var_dump .it отлично работает

 $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; print_r(json_decode($json, true)); 

Вывод:

 Array ( [a] => 1 [b] => 2 [c] => 3 [d] => 4 [e] => 5 ) 

Нет, он не возвращает пустой массив.

Печать массива с echo просто печатает строку "Array()" .

Используйте print_r или var_dump чтобы получить структуру переменной.

В новом PHP он также выдаст уведомление при использовании echo в массиве («Преобразование массива в строку»), поэтому вы все равно не должны этого делать. Указанное вами руководство изменено на print_r .

Он отлично работает, как упоминают другие, но когда вы печатаете массив, он преобразуется в строку, а это означает, что вместо данных реального массива будет напечатана строка «Array». Вы должны использовать print_r() , var_dump() , var_export () или что-то похожее на такие отладочные массивы.

Если вы включите уведомления, вы увидите:

 PHP Notice: Array to string conversion in ... 

Приведенный вами пример использует также var_dump по той же причине.

Вы можете подтвердить это на следующем веб-сайте: http://jsonlint.com/

Вы должны использовать функцию php json_decode () для декодирования json-кодированных данных. В основном функция json_decode () преобразует данные JSON в массив PHP.

Синтаксис: json_decode (данные, dataTypeBoolean, глубина, параметры)

data : – данные json, которые вы хотите декодировать в PHP.

dataTypeBoolean (необязательно) : – boolean, который заставляет функцию возвращать ассоциативный массив PHP, если он установлен в значение «true», или возвращает объект stdClass PHP, если вы опускаете этот параметр или устанавливаете его в «false». Оба типа данных могут быть доступны как массив и использовать массивы PHP на основе массива для синтаксического анализа.

depth : – Дополнительный предел рекурсии. В качестве значения этого параметра используйте целое число.

options : – Необязательный параметр JSON_BIGINT_AS_STRING.

Теперь идет к вашему коду

 $json_string = '{"a":1,"b":2,"c":3,"d":4,"e":5}' ; 

Назначьте действительные данные json переменной $ json_string в одинарной кавычки (''), поскольку строка json уже имеет двойные квоты.

 // here i am decoding a json string by using a php 'json_decode' function, as mentioned above & passing a true parameter to get a PHP associative array otherwise it will bydefault return a PHP std class objecy array. $json_decoded_data = json_decode($json_string, true); // just can check here your encoded array data. // echo '<pre>'; // print_r($json_decoded_data); // loop to extract data from an array foreach ($json_decoded_data as $key => $value) { echo "$key | $value <br/>"; } 

Он отлично работает, но вы используете неправильный метод для отображения массива.

Чтобы отобразить массив, вы не можете использовать echo но вам нужно использовать var_dump

var_dump имеет довольно печатную версию в php5.4

 $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump( json_decode($json));