PHP:if($ result = someFunction())如何工作?

时间:2014-09-01 17:55:58

标签: php mysql if-statement

我正在学习如何在PHP中使用MySQL,当学习如何在数据库中调用SQL查询时,我看到过程方法包含了这个if语句:

if($result = mysqli_query($link, $query))

这句话是什么意思?我认为它是:

 1.将$result设为mysqli_query($link, $query)  2.如果$result不为空(即mysqli_query方法返回某些内容),则执行if块。

如果我的想法是正确的,$result在if块之外是否可用?

3 个答案:

答案 0 :(得分:4)

这与

相同
$result = mysqli_query($link, $query);

if ($result) { // If $result is truthy
    // Stuff
}

基本上意味着“如果mysqli_query的结果是真实的,那么就做一些事情。如果失败了,就不要这样做,因为$result将是假的。

根据mysqli_query documentation

  

失败时返回FALSE。对于成功的SELECTSHOWDESCRIBEEXPLAIN个查询mysqli_query()将返回mysqli_result个对象。对于其他成功的查询,mysqli_query()将返回TRUE

mysqli_resultTRUE都是真实的,但FALSE显然不是。if。因此,如果查询正常,它只会进入$result块。

是的,<?php $object = (object)array('foo' => 'bar'); var_dump($object); // object(stdClass)#1 (1) { ["foo"] => string(3) "bar" } var_dump((bool)$object); // bool(true) 将在if查询之外提供,就像上面的示例一样。

A live demo demonstrating an object converted to a bool (it will be TRUE)

{{1}}

答案 1 :(得分:4)

  

赋值操作的结果是赋值。

这意味着:=运算符赋值运算符是准确的。它的作用类似于 a = b ,其中 b 的值已分配给变量 a 。以加法运算符返回数字的相同方式,例如, 1 + 2返回3,赋值操作也返回一个值。它返回的值是指定的值;在上面的情况下, b

的值

这就是$a = $b = $c有效的原因。

if ($result = mysqli_query($link, $query))

这会将mysqli_query($link, $query)的结果分配给$result,然后测试与the standard truthiness test, i.e. == true分配的相同值。

  

$result块之外可以使用if吗?

是的,PHP没有块范围,它只有功能范围

答案 2 :(得分:1)

mysqli_query($link, $query)失败时返回false。

所以做if($result = mysqli_query($link, $query)) 您将mysqli_query的返回值保存到$result并检查$result是否为false。 如果它不是假,则表示mysqli_query未失败,您可以在$result中访问结果。

if($result = mysqli_query($link, $query)) {
    //success. YAY
}
else {
    //failed.
}