关于$_GET和$_POST超全局变量的PHP 5.4特定ISSET查询。

3
我必须将一台关键任务(它们不都是吗?)的Ubuntu服务器从PHP 5.3升级到5.4,并且对于除一个可能的问题之外,我感到很高兴。我们的PHP脚本包括约1200个ISSET()引用,其中近乎所有引用都检查$_GET或$_POST变量的状态,其名称都由字符串而非数字组成。
我知道(5.3与5.4)的区别在于当使用ISSET($var ['somestringvalue'])时,5.4会返回false,我的疑问是这种不希望发生的行为是否适用于我们的字符串值 $ _POST和$ _GET变量?
我想快速制作一个5.4测试服务器,但我们使用了很多扩展和调整,即使这也比较困难。因此我想先在这里试试运气。提前感谢您。

1
但是我们使用了很多扩展和调整,这听起来更加需要建立一个测试服务器的理由。 - Sammitch
我同意,但我的测试服务器被征用作为精确镜像备份,以最小化停机时间! - Noseve
1个回答

1
那不是“不需要的行为”,它实际上是有用的。只有在字符串上调用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:您应该考虑使用开发服务器测试此类问题,而不会给用户/客户带来问题!


非常感谢 - 我应该对我的“不需要的行为”评论进行限定 - 我的意思是在我需要做的事情的背景下不需要。 - Noseve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接