2017-10-24 8 views
3

これは私にとって非常に困惑しています。なぜこれが起こっているのか分かりません。 XAMPP上でPHP 5.6.15でWindows 8.1 Enterprise Editionを実行している私はlocalhostでjson_decode()は異なる環境で異なる値を返します

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

戻り

PHP 5.5.9でのUbuntu 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バージョンのみがここでは 'null'以外のものを返します:https://3v4l.org/Y0DEH - いずれかのPHPバグです。 – deceze

答えて

0

最後のエラー(もしあれば)を返します。最後のエラーは、最後のJSONエンコード/デコード中に発生します。

私はあなたが興味深い事実を見つけることを望む:) Cheerse !!

+0

実際に試してみました。 関数isValidJSON($ string){ json_decode($ string); return(json_last_error()== JSON_ERROR_NONE); } ただし、エラーは表示されません。 int(0)を返します。ありがとう! –

+0

ブール式を返すので、 'json_last_error()'または 'echo'を返す代わりに' 1'または '0'だけを返します。 –

関連する問題