我了解到在检查特定 key 是否存在时不需要isset($array)
,但是我也知道有一些理由在没有已知 key 的情况下检查 $array
被实例化。
例如:
foreach ($foo as $bar) {
echo $bar;
}
PHP 注意: undefined variable :foo
PHP 警告:为 foreach() 提供的参数无效
这样更好:
if (isset($foo)) {
foreach ($foo as $bar) {
echo $bar;
}
}
因为我在处理数据时经常使用数组,所以我想问一下是否还有其他一些情况我应该检查整个数组 isset()
?或者我应该坚持检查我将要使用的每个 $array[$key]
吗?
这与这样做是否有任何优点或缺点的问题有关:
if (isset($foo[0])) {
foreach ($foo as $bar) {
// noop
}
}
而不是这个:
if (isset($foo)) {
foreach ($foo as $bar) {
// noop
}
}
那么,如果 $key
,我是否应该使用 isset($array)
代替 isset($array[$key])
是已知的?
最佳答案
在PHP中,isset()
是一种特殊形式,不是函数;当您调用 isset($ary[$index])
时,不必先设置 $ary
本身。即使使用 E_STRICT
,调用也不会生成警告,因为 isset
实际上并没有尝试访问 $ary[$index]
;它确定 $ary
未设置并返回 false
。因此,您无需先检查数组即可将 isset
应用于元素。
您的问题表明您已经知道这一点,并且想知道您是否有理由这样做。我唯一能想到的就是效率:如果你要检查数组中是否存在大量键,你可以通过首先检测数组本身何时未设置并跳过所有键来节省一些工作在这种情况下,单独的 key 检查。
关于php - 什么时候应该在不指定键的情况下对数组使用 isset()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10273555/