Php json_encode()返回false

Php json_encode()返回false,php,arrays,json,var-dump,Php,Arrays,Json,Var Dump,这是我第一次面对,一个数组结果布尔值的var_转储json_编码 我有一个数组,它是由非序列化产生的。我varu转储了它,并确保它是一个有效的数组。结果如下所示。这只是一个片段,而不是整个调试视图 array (size=3) 'id' => string 'asco-power-technologies-l-p' (length=27) 'name' => string 'asco-power-technologies-l-p' (length=27) 'children'

这是我第一次面对,一个数组结果布尔值的var_转储json_编码

我有一个数组,它是由非序列化产生的。我varu转储了它,并确保它是一个有效的数组。结果如下所示。这只是一个片段,而不是整个调试视图

array (size=3)
'id' => string 'asco-power-technologies-l-p' (length=27)
  'name' => string 'asco-power-technologies-l-p' (length=27)
  'children' => 
    array (size=2)
      0 => 
        array (size=4)
          'id' => string 'apl-logistics' (length=13)
          'name' => string 'APL LOGISTICS' (length=13)
          'data' => 
            array (size=2)
              'band' => string 'ASCO POWER TECHNOLOGIES ,L.P.' (length=29)
              'relation' => string 'Buyer of band' (length=13)
          'children' => 
            array (size=11)
              0 => &
                array (size=3)
                  'id' => string 'trisa-ag' (length=8)
                  'name' => string 'TRISA AG' (length=8)
                  'data' => 
                    array (size=2)
                      'band' => string 'APL LOGISTICS' (length=13)
                      'relation' => string 'Buyer of band' (length=13)
              1 => &
                array (size=3)
                  'id' => string 'colgate-sanxiao-co-ltd' (length=22)
                  'name' => string 'COLGATE SANXIAO CO LTD' (length=22)
                  'data' => 
                    array (size=2)
                      'band' => string 'APL LOGISTICS' (length=13)
                      'relation' => string 'Buyer of band' (length=13)

Aterwards i json_使用最大深度=3对其进行编码。注意,我使用的是PHP5.5,运行在Apache2.4上,因此它支持json_encode()上的深度参数。这就是我正在做的

    $array = unserialize($serial);
    var_dump($array);
    $json = json_encode($array, JSON_PRETTY_PRINT, 3);
    var_dump($json);
最后我得到了正确转储的
$array
var\u和带有假布尔值结果的
$json
var\u。怎么了?是不是因为早期的PHP版本,Unpper var_dump会导致错误的布尔值?有人曾经面对过这种情况吗

更新:

这是序列化字符串。整根绳子太乱了,所以我只贴了一根

a:3:{s:2:"id";s:27:"asco-power-technologies-l-p";s:4:"name";s:27:"asco-power-technologies-l-p";s:8:"children";a:2:{i:0;a:4:{s:2:"id";s:13:"apl-logistics";s:4:"name";s:13:"APL LOGISTICS";s:4:"data";a:2:{s:4:"band";s:29:"ASCO POWER TECHNOLOGIES ,L.P.";s:8:"relation";s:13:"Buyer of band";}s:8:"children";a:11:{i:0;a:3:{s:2:"id";s:8:"trisa-ag";s:4:"name";s:8:"TRISA AG";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:1;a:3:{s:2:"id";s:22:"colgate-sanxiao-co-ltd";s:4:"name";s:22:"COLGATE SANXIAO CO LTD";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:2;a:3:{s:2:"id";s:25:"apll-on-behalf-oftongfang";s:4:"name";s:25:"APLL ON BEHALF OFTONGFANG";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:3;a:3:{s:2:"id";s:26:"apll-on-behalf-of-zhejiang";s:4:"name";s:26:"APLL ON BEHALF OF ZHEJIANG";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:4;a:3:{s:2:"id";s:33:"apll-on-behalf-of-tongfang-global";s:4:"name";s:33:"APLL ON BEHALF OF TONGFANG GLOBAL";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:5;a:3:{s:2:"id";s:34:"apll-on-behalf-of-ningbo-xiangyuan";s:4:"name";s:34:"APLL ON BEHALF OF NINGBO XIANGYUAN";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:6;a:3:{s:2:"id";s:33:"apll-on-behalf-of-ningbo-homestar";s:4:"name";s:33:"APLL ON BEHALF OF NINGBO HOMESTAR";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:7;a:3:{s:2:"id";s:17:"apll-on-behalf-of";s:4:"name";s:17:"APLL ON BEHALF OF";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:8;a:3:{s:2:"id";s:21:"apl-logistics-sdn-bhd";s:4:"name";s:21:"APL LOGISTICS SDN BHD";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}}i:9;a:4:{s:2:"id";s:21:"apl-logistics-limited";s:4:"name";s:21:"APL LOGISTICS LIMITED";s:4:"data";a:2:{s:4:"band";s:13:"APL LOGISTICS";s:8:"relation";s:13:"Buyer of band";}s:8:"children";a:27:{i:0;a:3:{s:2:"id";s:26:"tri-phil-international-inc";s:4:"name";s:27:"TRI-PHIL INTERNATIONAL INC.";s:4:"data";a:2:{s:4:"band";s:21:"APL LOGISTICS LIMITED";s:8:"relation";s:13:"Buyer of band";}}i:1;a:3:{s:2:"id";s:16:"pt-apl-logistics";s:4:"name";s:17:"PT. APL LOGISTICS";s:4:"data";a:2:{s:4:"band";s:21:"APL LOGISTICS LIMITED";s:8:"relation";s:13:"Buyer of band";}}i:2;a:3:{s:2:"id";s:25:"keygold-manufacturing-inc";s:4:"name";s:26:"KEYGOLD ... 

$array
的深度肯定大于3。只需将深度设置为更大的数字


另外,如果json_编码失败,您还可以使用查看错误消息

我只是将深度更改为4、5、10甚至100,但仍然得到相同的结果。如果您使用PHP页面中的示例1,那么很可能是JSON#U错误递归、JSON#U错误INF_或ŠNAN,或者JSONŠU错误不支持ŠU类型,因为如果您没有修改代码来处理它们,那么它们将显示为“未知错误”。从5.5.0开始,将显示实际的错误消息,而不是错误代码。谢谢!你的问题帮助了我!在我的例子中,由于一个变量的编码,json_encode返回false…我需要对该变量进行utf8_编码,然后再进行json_编码…现在它可以工作了!当做