Я просто тестирую этот образец из php doc ( http://au2.php.net/manual/en/function.json–decode.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));