这个if语句是什么意思?


PHP - What is this if statement meaning?

我使用PHP大约3个月了,看到了很多语法。
但不明白这是什么意思。

if($foo = 'somevalue') //or if($foo = $somevalue)
{
}

我只看到if($foo),这意味着if($foo == TRUE)。或者if($foo ==,>,<somevalue)>
但在这种情况下,如果$foo保存一些值??

您只是同时值赋给$foo并在if语句中对其进行评估。因此,如果$foo的值对应于false,那么if语句中的代码将不会执行。例如:

if ($foo = 12) { // foo's value is now 12
    // code here would execute
}
echo $foo; // 12
if ($foo = 0) { // foo's value is now 0
    // would not execute
}
echo $foo; // 0

很多人会说=赋值。但是,这在if语句中也很有用

if语句if($foo = 'somevalue')通常是不好的,因为它总是求值为true。但是if($foo = $somevalue)稍微好一点,因为它类似于检查数据库查询结果时看到的内容,例如使用

if ($result = $mysqli->query("SELECT Name FROM City LIMIT 10")) 

如果$mysqli->query成功运行if语句,则计算结果为true,因为函数的成功返回结果不被认为是FALSE,并且在if语句中,您可以期望$result可用于其他mysqli_*函数。

但是,如果$mysqli->query不成功,它将返回false,并且if语句的计算结果为false,您可以设置else语句来输出错误。如果执行

,您将得到相同的结果
$somevalue = $mysqli->query("SELECT Name FROM City LIMIT 10")
if($foo = $somevalue)

但是这样做会浪费时间因为你可以直接跳过$somevalue

这个if语句将简单地

  • 返回true并将字符串somevalue赋值给$foo
  • 返回false,因为somevalue不能分配给$foo

在很多情况下,这是写if语句的错误,在这里有人可能想检查$foo的值是否为字符串somevalue

要正确地求值,需要下面的

if ($foo == 'somevalue') //$somevalue

=会赋一个新值,==会比较两个值。

当您有单个=符号时,它表示赋值操作符。即if条件总是返回true。

$a = 2;
if ($a = 3) {
    echo "True";
} else {
    echo "False";
}
//Output: True

然而,如果使用逻辑运算符==,它将比较两个值并返回布尔值true/false。

$a = 2;
if ($a == 3) {
    echo "True";
} else {
    echo "False";
}
//Output: False