我的应用程序的一个组成部分看起来测试字符串可以被解码,如果是的话,它会以解码值的变量: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