我的應用程序的一個組成部分看起來測試字符串可以被解碼,如果是的話,它會以解碼值的變量:json_decode是重整字符串,而不是返回null
if (json_decode($value, true)) {
$value = json_decode($value, true);
}
在我的一臺服務器,如果我傳入字符串「123-555-6789」,它會將其解析爲有效的json,但它只返回字符串「123」。如果電話號碼用句點字符分隔:「123.555.6789」json_decode將返回「123.555」。即使這樣做,json_last_error告訴我沒有錯誤。
我想這是一個錯誤,因爲這個問題的服務器運行較老的PHP。但後來我對它進行了更新,以便它與返回正確值(NULL)的服務器的版本相同。它沒有解決問題。帶有PHP版本5.5.12的服務器正常工作。具有php 5.2的服務器現在具有5.5.17的值。給出預期輸出的服務器是windows,破壞的是ubuntu。雖然我不認爲這會有所作爲。
是否有在php.ini中的配置設置或我應該關閉的東西會改變這一點?如:fundamentally_break_json = 1
?
這聽起來更像是你有[type juggling](http://php.net/manual/en/language.types.type-juggling.php)問題。 – 2014-09-29 16:41:22
不能複製5.5.17:http://codepad.viper-7.com/YAMWMG – 2014-09-29 16:53:46
@Jason McCreary我認爲你是對的。 $ n =(int)「123-555-6789」返回$ n == 123。但問題依然存在。爲什麼這隻發生在我的一臺服務器上?我如何解決它? – Shane 2014-09-29 18:10:03