当我将我的站点从 HostGator 移至专用服务器时,有几件事情被破坏了,而且所有事情都被破坏了,涉及类型强制。如果 $_POST['var'] 为 0,则它不被视为整数,并且与另一个整数的比较失败。
我在我发现的网站上所有那些损坏的地方都经过并强制使用 int 类型,但我敢肯定还有更多我没有找到。我对 PHP.ini 配置不是很熟悉,但也许你是并且可以告诉我如何解决这个问题?
谢谢
当我将我的站点从 HostGator 移至专用服务器时,有几件事情被破坏了,而且所有事情都被破坏了,涉及类型强制。如果 $_POST['var'] 为 0,则它不被视为整数,并且与另一个整数的比较失败。
我在我发现的网站上所有那些损坏的地方都经过并强制使用 int 类型,但我敢肯定还有更多我没有找到。我对 PHP.ini 配置不是很熟悉,但也许你是并且可以告诉我如何解决这个问题?
谢谢
不——您不能更改 PHP 的类型转换功能,但您可以编写代码以更好地处理 PHP 的动态类型转换。
所有请求变量都被自动视为字符串。如果没有看到您的代码,很难确定“比较失败”的标准是什么。
如果我运行:
print var_export((0=="0"), true) . "\n";
print var_export(("0"==0), true) . "\n";
print var_export((0==(integer)"0"), true) . "\n";
print var_export((0==="0"), true) . "\n";
然后我得到
true
true
true
false
即整数比较失败的唯一时间是当我要求匹配类型和值时。