2013-10-18 2 views
19

내가 처음으로 직면 한 것은 그 배열의 부울 값 결과 var_dumping json_encode입니다.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) 

.....

Aterwards 내가 최대 깊이 = 3을로 json_encode. 참고, 나는 PHP 5.5를 사용하고 Apache 2.4에서 실행되므로 json_encode()에서 깊이 매개 변수를 지원합니다. 이것은 내가하고 있었던 일이다.

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

마지막으로 내가 $array가 제대로 $json 거짓 부울 값의 결과 var_dumped 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가 false를 반환했습니다 ... json_encode를 수행하기 전에 utf8_encode를 변수에 추가해야했습니다 ... 이제 작동합니다! 감사합니다 –

답변

29

$array의 깊이는 확실히 3보다 큽니다. 깊이를 더 크게 만듭니다.

참고로 json_encode가 실패한 경우의 오류 메시지를 보려면 json_last_error을 사용할 수도 있습니다.

+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이 가능합니다. 코드를 수정하지 않으면 처리 할 수 ​​없으므로 "알 수없는 오류"로 표시됩니다. –