2017-10-24 3 views
3

이것은 상당히 혼란 스럽습니다. 왜 이런 일이 발생하는지 이해할 수 없습니다. XAMPP에 PHP 5.6.15에서 Windows 8.1 Enterprise Edition을 실행하는 내 로컬 호스트에json_decode()가 다른 환경에서 다른 값을 반환합니다.

<?php var_dump(json_decode('26-10-2017')); 

반환

PHP 5.5.9과 우분투 14.04 LTS를 실행하는 Linode 상자에
NULL 

동안 on LAMP (Sentora Panel 실행 중)

얻을 수

int(26) 

나는이 현상을 설명 할 수있는 누구에게나 많은 빚을지고있다.

나는 이것이 유효한 JSON이 아니라는 것을 알고 있지만, 출력의 차이를 일으키는 원인과이를 피하는 방법을 배우는 것이 나의 목적입니다.


나는 사실 나는 그러나, 어떤 오류를 표시하지 않는 것
function isValidJSON($string) { 
    json_decode($string); 
    return (json_last_error() == JSON_ERROR_NONE); 
} 

을 시도하고 있었다, json_last_error()을 시도했다.

<?php var_dump(json_decode('26-10-2017')); var_dump(json_last_error()); 

반환

int(26) 
int(0) 

감사합니다!

+2

처음에는 유효하지 않은 JSON입니다. 왜 다른 값을 반환하는지에 대한 질문은 흥미 롭습니다 (아마도 HHVM 대 PHP 적절한 버전 및/또는 다른 버전 ...?). 그러나 궁극적으로 이것은 전혀 작동하지 않아야합니다. – deceze

+1

FWIW, 일부 5.2.x 버전은 https://3v4l.org/Y0DEH - 여기에 'null'이 아닌 다른 것을 반환합니다. 어느 쪽이든 PHP 버그입니다. – deceze

답변

0

마지막으로 발견 된 오류 (있는 경우)를 반환하는 json_last_error()을 확인하십시오. 마지막 JSON 인코딩/디코딩 중에 발생했습니다.

재미있는 사실을 알려주세요. Cheerse !!

+0

나는 그것을 시도했다. 실제로 시도했다. 함수 isValidJSON ($ string) { json_decode ($ string); return (json_last_error() == JSON_ERROR_NONE); } 그러나 오류가 표시되지 않는 것 같습니다. int (0)을 반환합니다. 감사! –

+0

부울 표현식을 반환하므로 'json_last_error()'또는 'echo'를 반환하는 대신'1' 또는'0' 만 반환합니다. –

관련 문제