关于$_GET的PHP 5.4特定的ISSET查询.$ _POST已经


PHP 5.4-specific ISSET query regarding $_GET. $_POST Superglobals

我必须升级一个关键任务(不都是吗?)Ubuntu服务器从PHP 5.3到5.4,我很高兴除了一个可能的问题。我们的PHP脚本包含大约1200个ISSET()引用,几乎所有这些引用都检查$_GET或$_POST变量的状态,它们的名称都包含字符串,而不是数字。

我知道(5.3 v 5.4)的区别,其中5.4返回false当ISSET($var['somestringvalue'])使用时,我的查询是这种不需要的行为是否将适用于我们的字符串值$_POST和$_GET变量?

我本可以快速创建一个5.4测试服务器,但我们使用了如此多的扩展和调整,甚至这说起来容易做起来难。所以我想先在这里碰碰运气。

这不是"不想要的行为",它实际上是有用的。只有在字符串上调用isset()时,行为才会改变。

$string = 'My string'; // length = 9, character indexes 0 to 8
var_dump(isset($string[5])); // makes sense -> checks whether there's a character on the 5th position (true)
var_dump(isset($string[10])); // makes sense -> checks whether there's a character on the 10th position (false)
var_dump(isset($string['foo'])); // doesn't make sense -> checks whether there's a character on the "foo" position (false)

因为$_GET和$_POST总是关联数组,这个新行为在任何情况下都不会影响您。欲了解更多信息,请查看http://php.net/manual/en/function.isset.php

手册

PS:你应该考虑一个开发服务器,测试这样的东西,而不会给你的用户/客户带来问题!