2015-04-07 57 views
2

我见过的PHP代码的下一句话:或者运营商分配左侧

$a OR $a = $b; 

这是什么代码的行为?

这段代码的目的是什么?

谢谢,

+2

嗨。请告诉 - 是$ a或$ a = $ b'是SQL查询的一部分吗? –

+0

我应该认为这是PHP中的语法错误 - 一个等号是分配,而不是比较。我们需要看到更多的代码,并且一些解释/上下文也会很好。 – halfer

+1

这是一个_conditional赋值语句。如果它包含一个“真”值,我希望它会单独保留_ $ a_的当前值。否则_ $ a_会被设置为_ $ b_中的值。另一种说法是 - 如果$ a为'false',则将$ a设置为$ b的值。或'短路',所以如果$ a是'真正'评估停止。 ; -/ –

回答

1

操作员“OR”是一个逻辑运算符,用于检查的两个(或多个)方面有一个为真。如果$ a或($ a = $ b)为TRUE。 运算符“==”(在你的问题是=,但我认为==)是一个比较运算符,用于检查$ a是否等于$ b(如同样的值,术语A是真的,术语B是真,其他情况)。 谢谢

+0

您可能想要编辑您的答案,以符合Ryan的评论。原始代码中的'='是正确的。 – andrewsi

+0

PHP中的符号(=)是一个基本的赋值运算符。对? – Jefersonfs

+0

你是对的。代码正在做的是检查'$ a'是否已经有一个值;如果它的值为false,那么它将给它赋值'$ b'。它的工作原理是OR操作从左到右计算,如果左边的计算结果为true,则右侧不会被检查。我已经在几个地方看到了这种构造,虽然我喜欢这种紧凑性,但我更愿意使用稍微更冗长的代码,这些代码在六个月后回来时更容易阅读。 – andrewsi