2013-10-18 7 views
19

これは私が直面した初めてのことです。その結果、ブール値の結果となる配列のjson_encodeをvar_dumpingします。json_encode()はfalseを返します

私は、シリアル化解除の結果である配列を持っています。私はそれをvar_dumpedし、それが有効な配列であることを確認しました。結果は以下のようになります。これは単なるものであり、デバッグビュー全体ではありません。

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) 

.....私は、最大深さ= 3でそれをjson_encode

Aterwards。注意、私はjson_encode()の深さパラメータをサポートするように、PHP 5.5を使用してApache 2.4で動作しています。これは私がやっていたことです。

$array = unserialize($serial); 
    var_dump($array); 
    $json = json_encode($array, JSON_PRETTY_PRINT, 3); 
    var_dump($json); 

は最終的に私は、偽のブール値の結果を適切に$array var_dumpedと$json var_dumpedを得ました。どうしたの?それは初期のPHPリリースによると、無効なvar_dumpはfalse booleanとなるでしょうか?誰もこれに直面したことがありますか?

UPDATE:

これはシリアル化文字列です。弦全体が束になっているので、私は一枚だけ貼り付けています。

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 ... 
+0

ありがとうございます!あなたの質問は私を助けました!私の場合、json_encodeは1つの変数のエンコーディングのためにfalseを返していました... json_encodeを実行する前に、変数にutf8_encodeを行う必要がありました。よろしくお願いします。 –

答えて

29

深さが$arrayの場合は、明らかに3より大きくなります。深度を大きくするだけです。

また、json_last_errorを使用して、json_encodeが失敗した場合のエラーメッセージを表示することもできます。

+0

私はちょうど深さを4,5,10、さらには100に変更しても同じ結果を得ています。 –

+3

json_last_errorは、不明なエラーを示します。 –

+0

PHPページのExample#1を使用した場合は、JSON_ERROR_RECURSION、JSON_ERROR_INF_OR_NAN、またはJSON_ERROR_UNSUPPORTED_TYPEの可能性が高いです。コードを変更していない場合は、「未知のエラー」と表示されるためです。 –

関連する問題