【问题标题】:PHP json_decode return empty arrayPHP json_decode 返回空数组
【发布时间】:2014-07-20 08:15:57
【问题描述】:

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

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

请帮忙!

【问题讨论】:

    标签: php decode json


    【解决方案1】:

    您可以在以下位置进行验证 网址:http://jsonlint.com/

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

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

    data : - 你想在 PHP 中解码的 json 数据。

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

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

    选项:- 可选 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/>";
    
    }
    

    【讨论】:

    • 它将空对象 {} 作为空数组 []。但是您将第二个参数提供为 true 的指令确实有效。所以 1+ 来自我。
    【解决方案2】:

    你不应该使用 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
    )
    

    【讨论】:

      【解决方案3】:

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

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

      使用print_rvar_dump获取变量的结构。

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          正如其他人提到的那样,它工作得很好,但是当您打印数组时,它会转换为字符串,这意味着只会打印字符串“Array”而不是真正的数组数据。您应该使用print_r()var_dump()、var_export() 或类似的调试数组。

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

          PHP Notice:  Array to string conversion in ...
          

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

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

              猜你喜欢
              • 2014-04-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-07-05
              • 2011-03-07
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多