繁体   English   中英

PHP json_decode返回空数组

[英]PHP json_decode return empty array

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

不知道为什么...曾经四处搜寻,但未找到解决方案。

请帮忙!

您不应该使用echo,因为它是一个数组。 使用print_r或var_dump。它工作正常

$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
)

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

您必须使用php“ json_decode()”函数来解码json编码的数据。 基本上json_decode()函数将JSON数据转换为PHP数组。

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

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

dataTypeBoolean(可选) :布尔值,使函数如果设置为“ true”,则返回PHP关联数组;如果省略此参数或将其设置为“ false”,则返回PHP stdClass对象。 可以像访问数组一样访问这两种数据类型,并使用基于数组的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打印数组只会打印字符串"Array()"

使用print_rvar_dump获取变量的结构。

在较新的PHP中,当在数组上使用echo (“数组到字符串转换”)时,它也会发出通知,因此无论如何您都不应这样做。 您提到的手册已更改为print_r

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

要显示数组,您不能使用echo但需要使用var_dump

就像其他人提到的那样,它可以正常工作,但是当您打印数组时,它将转换为字符串,这意味着将仅打印字符串“ Array”而不是实际的数组数据。 您应该使用print_r()var_dump() ,var_export()或类似调试数组的东西。

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

PHP Notice:  Array to string conversion in ...

出于相同的原因,链接的示例也使用var_dump。

var_dump在php5.4中有漂亮的打印

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM