在PHP if
语句中,当我比较变量时,我需要使用两个==
符号。例如,
if($foo == 'bar'){
//Run code
}
但如果我要使用这样的等号:
if($foo = 'bar'){
//Run code
}
这实际上会设置$foo
变量。
为什么你需要在if
语句中设置这样的变量?我想不出一个有用的实例,而且我所说的许多程序员都有同感。
PHP是否允许您以这种方式设置变量?
答案 0 :(得分:7)
测试返回错误的函数的结果:
if (($err = some_function())) {
echo "Error: " . $err;
}
答案 1 :(得分:4)
最常见的用例之一是确保某些东西存在(或者是真实的),然后在块中使用它,例如:
while ($row = $dbConnection->fetch()) { //Make sure that $dbConnection->fetch() is not false or NULL...
//You can use $row here!
}
答案 2 :(得分:4)
PHP和C一样,允许将任何表达式写入if条件。
这可以是一个表达式:
if(!$db=new database()) die("NO DATABASE CONNECTION");
但它的背景是表达式$a="abc"
以不同的方式进行评估:
if($a)
因此,表达式被计算为if(true),因为优先级表是 运算符使表达式成功。这不是PHP的错误,它是 而是TRUE / FALSE的定义以及如何评估事物。
这也可以在循环中使用,如使用$db->fetch()
答案 3 :(得分:1)
简化,例如。
if ($var instanceof MyClass && $obj = $var->getResultObject()){
/// do something
}
而不是
if ($var instanceof MyClass){
$obj = $var->getResultObject()
if ($obj){
/// do something
}
}