两种语言之间有速度差异吗?
if (isset($_POST['var']))
或者
if ($_POST['var'])
哪一个更好,还是它们是一样的?
使用 isset
是一个好习惯,原因如下:
$_POST['var']
是一个空字符串或者 "0"
,isset
仍然可以检测到该变量的存在。它们不是相同的。考虑一个概念性数组:
$arr = array(
'a' => false,
'b' => 0,
'c' => '',
'd' => array(),
'e' => null,
'f' => 0.0,
);
$x
是这些键之一('a'到'f'),而不存在的键'g',它的工作原理如下:
$arr[$x]
对于所有键a到g都是false
isset($arr[$x])
对于键a、b、c、d和f为true
,对于e和g为false
array_key_exists($x, $arr)
对于所有键a到f都为true
,对于g为false
isset
函数用于检测变量是否有值,而if语句用于检测变量的值。
例如:
// $_POST['var'] == 'false' (the string false)
if (isset($_POST['var'])) {
// Will enter this if
}
if ($_POST['var']) {
// Won't enter this one
}
一个大问题是两个表达式的等价性取决于您正在检查的变量的值,因此您不能做出假设。
$a =''; isset($a);
将评估为true。 - Fernando Silvaerror_reporting(E_ALL | E_STRICT);
你在这里做什么
if($var)
并不是检查值是否设置。因此,严格的PHP将为未设置的变量生成一个通知。(这在数组中经常发生)
此外,在严格的PHP中(只是提醒你或其他人),在函数中使用未设置的变量作为参数会抛出一个通知,并且你不能在函数内部使用isset()来避免这种情况。
重申一下别人说过的话,如果你执行:
if($variable)
如果 $variable 未 设置,你将会收到一个提示错误。另外...
$var = 0;
if($variable) {
//This code will never run, because $var is false
}
但是在这种情况下使用isset会返回true。