PHP json_decode返回空数组

时间:2014-07-20 08:15:57

标签: php decode json

我只是从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数组。

不知道为什么......一直在寻找但没有找到解决方案。

请帮忙!

6 个答案:

答案 0 :(得分:3)

你不应该使用echo,因为它是一个数组。使用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
)

答案 1 :(得分:3)

您可以在以下方面进行验证  网站:http://jsonlint.com/

你必须使用php&#34; json_decode()&#34;用于解码json编码数据的函数。 基本上json_decode()函数将JSON数据转换为PHP数组。

语法:json_decode(data,dataTypeBoolean,depth,options)

数据: - 要在PHP中解码的json数据。

dataTypeBoolean(可选): - 布尔值,如果设置为&#34; true&#34;,则使函数返回PHP关联数组,如果省略此参数,则返回PHP stdClass对象或设置为&#34; false&#34;。这两种数据类型都可以像数组一样访问,并使用基于数组的PHP循环进行解析。

深度: - 可选的递归限制。使用整数作为此参数的值。

选项: - 可选的JSON_BIGINT_AS_STRING参数。

现在来到您的代码

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

将有效的json数据分配给单个“#”中的变量$ json_string(&#39;&#39;)as    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/>";

}

答案 2 :(得分:2)

不,它不会返回一个空数组。

使用echo打印数组只会打印字符串"Array()"

使用print_rvar_dump获取变量的结构。

在较新的PHP中,它也会在数组上使用echo时发出通知(“数组到字符串转换”),所以你不应该这样做。您提到的手册已更改为print_r

答案 3 :(得分:1)

它工作正常,但您使用错误的方法来显示数组。

要显示数组,您无法使用echo,但需要使用var_dump

答案 4 :(得分:1)

正如其他人提到的那样工作正常,但是当你打印数组时它会被转换为字符串,这意味着只有字符串&#34;数组&#34;将打印而不是真正的数组数据。您应该使用print_r()var_dump(),var_export()或类似的东西来调试这样的数组。

如果您打开通知,您会看到:

PHP Notice:  Array to string conversion in ...

您链接的示例也使用了var_dump,原因相同。

答案 5 :(得分:0)

var_dump在php5.4中打印得很漂亮

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