Sam*_*ala 6 php arrays language-features
我已经知道isset($array)在检查是否存在特定密钥时不需要,但是我也知道有一些理由要检查,如果没有已知密钥,是否$array实例化.
例如:
foreach ($foo as $bar) {
echo $bar;
}
Run Code Online (Sandbox Code Playgroud)
PHP注意:未定义的变量:foo
PHP警告:为foreach()提供的参数无效
这样更好:
if (isset($foo)) {
foreach ($foo as $bar) {
echo $bar;
}
}
Run Code Online (Sandbox Code Playgroud)
因为我在处理数据时使用了很多数组,我想问一下是否还有其他情况我应该检查是否整个数组isset()?或者,我应该坚持检查每$array[$key]一个我将要使用的东西?这涉及到这样做是否有任何优点或缺点的问题:
if (isset($foo[0])) {
foreach ($foo as $bar) {
// noop
}
}
Run Code Online (Sandbox Code Playgroud)
而不是这个:
if (isset($foo)) {
foreach ($foo as $bar) {
// noop
}
}
Run Code Online (Sandbox Code Playgroud)
isset($array)代替isset($array[$key]),如果$key是已知的?Mar*_*eed 15
在PHP中,isset()是一种特殊形式,而不是一种功能; 当你打电话时isset($ary[$index]),$ary本身不必先设置.即使使用E_STRICT,呼叫也不会产生警告,因为isset实际上并没有尝试访问$ary[$index]; 它确定$ary没有设置和返回false.因此,您无需先检查数组以应用于isset元素.
你的问题表明你已经知道了,并且想知道你是否有理由这么做.我唯一能想到的就是效率:如果你要检查一个数组中是否存在大量的键,你可以通过先检测数组本身未设置的时间来节省一些工作,然后只是跳过所有在这种情况下,单个密钥检查.
如果您想知道阵列是否完全定义,请使用isset($array).
如果您想知道是否定义了特定键,请使用isset($array[$key]).
例如,这是完全有效的:
$foo = array();
foreach($foo as $bar) {
// never called because $foo is an empty array
}
Run Code Online (Sandbox Code Playgroud)