我正在尝试解决问题,需要了解if语句的内容:
if ($confirmation = $payment_modules->confirmation()) {
我能找到的所有资源只显示带有双等号的语句,而不是单个。这是一个PHP的速记形式吗?它在做什么?
(如果它实际上是错误的语法,将其更改为双等号不能解决问题。原样,在某些情况下它确实返回true。在我正在排除故障的情况下,它不会返回true直到我刷新浏览器之后。)
非常感谢任何帮助!!!
答案 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
并返回零。因此,它变为b
。 a = 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;
同时分配所有这些变量。