2009-10-05 90 views
12

我试图解决问题,并需要了解if语句这是什么说法:一个php语句与一个等号...?这是什么意思?

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

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

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

任何帮助非常感谢!

+0

感谢你们所有人为你的AWESOMELY快速响应!哇,我无法告诉你,在一堆挫败中获得快速和有益的回复是多么令人耳目一新!我在下面评论了迄今为止使用的那些。谢谢! – FrustratedPHPnovice 2009-10-05 03:16:54

回答

17

这是速记的形式,这是完全等价的:

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

} 
+0

完美,谢谢!我能理解!现在要弄清楚为什么$ payment_modules-> confirmation()是空的,直到我刷新浏览器之后... – FrustratedPHPnovice 2009-10-05 02:59:16

+0

@FrustratedPHPnovice单击此答案旁边的复选框以接受它 – 2009-10-05 12:35:31

+0

是啊! ;)hehehe – nickf 2009-10-05 23:23:01

0

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

尝试做的var_dump:

var_dump($payment_modules->confirmation()); 

看到它的计算结果为布尔什么,并从那里,你可以排除故障。如果您需要更多帮助,请发布更多代码。

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

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

将等同于true

+0

var_dump的想法也有帮助。它在刷新之前为空,刷新后用数组内容填充。感谢您的超级快速响应和提供更多帮助。让我把这些信息先运行一下。 – FrustratedPHPnovice 2009-10-05 03:12:52

0

人有时候喜欢做的任务,然后检查是否分配经历好的。将其与失败时返回错误(或等效)的函数进行配对,您可以同时进行作业和检查。

为了理解这一点,请记住赋值是一种表达式,所以(像所有表达式)都有一个返回值。该返回值与变量中的值相等。这就是为什么你可以这样做

a = b = c = 0;

来分配所有这些变量在同一时间。

7

这将首先将$payment_modules->confirmation()的值分配给$confirmation=运营商将评估新值$confirmation

这与写作同样的效果:

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

这更多的是一个元观察,但是当代表性较低的人比代表性较高的代表人更少时,即使答案几乎相同而代表性较低的代表人首先回答,这也不是很有趣吗?有趣的社会现象就是全部。 +1与该代码一起清晰解释。 – mrduclaw 2009-10-05 03:43:56

4

代码工作,因为赋值返回指定的值,因此如果$payment_modules->confirmation()true$confirmation将被设置为true,然后分配将返回truefalse同样的事情。

这就是为什么你可以使用一个命令来分配许多变量,如a = b = 0。将零分配给b并返回零。因此,它变成a = 0。而a收到零,它会返回该零,可以或不可以使用。