带有一个等号的php if语句......?这是什么意思?

时间:2009-10-05 02:51:00

标签: php

我正在尝试解决问题,需要了解if语句的内容:

if ($confirmation = $payment_modules->confirmation()) { 

我能找到的所有资源只显示带有双等号的语句,而不是单个。这是一个PHP的速记形式吗?它在做什么?

(如果它实际上是错误的语法,将其更改为双等号不能解决问题。原样,在某些情况下它确实返回true。在我正在排除故障的情况下,它不会返回true直到我刷新浏览器之后。)

非常感谢任何帮助!!!

5 个答案:

答案 0 :(得分:20)

这是一种速记形式,与此完全相同:

$confirmation = $payment_modules->confirmation();
if ($confirmation) {

}

答案 1 :(得分:8)

这将首先将$payment_modules->confirmation()的值分配给$confirmation=运算符将评估为$confirmation的新值。

这与写作具有相同的效果:

$confirmation = $payment_modules->confirmation();
if ($confirmation) {
  // this will get executed if $confirmation is not false, null, or zero
}

答案 2 :(得分:4)

代码有效,因为赋值返回分配的值,因此如果$payment_modules->confirmation()true,则$confirmation将设置为true,然后赋值将返回{ {1}}。 true也是如此。

这就是为什么你可以使用命令分配给许多变量,如false中所示。将零分配给a = b = 0并返回零。因此,它变为ba = 0收到零,它将返回零,可以使用也可以不使用。

答案 3 :(得分:0)

=表示赋值($ a = 1),==用于比较(true == false为false)。我认为在你的例子中它应该使用=因为它将它分配给确认的返回值,这应该是评估为真的值。

尝试执行var_dump:

var_dump( $payment_modules->confirmation() );

查看它评估的布尔值,然后从那里进行故障排除。如果您需要更多帮助,请发布更多代码。

class test() {
    public function confirmation() { return true; }
}

$boolean = test::confirmation();
var_dump( $boolean );

将等同于true

答案 4 :(得分:0)

有时人们喜欢做作业,然后检查作业是否顺利。将此配对与失败时返回false(或等效)的函数配对,您可以同时执行赋值和检查。

为了理解这一点,请记住赋值是一种表达式,因此(与所有表达式一样)具有返回值。返回值等于放入变量的任何值。这就是为什么你可以做像

这样的事情

a = b = c = 0;

同时分配所有这些变量。