php中or运算,PHP中的or运算符的行为

基础:

>赋值表达式将生成分配的值。

这意味着什么? $ foo =’bar’是一个表达式,其中赋值运算符=赋值。表达式总是返回一个值本身。就像表达式1 2导致值3,表达式$ foo =’bar’导致值’bar’。这就是为什么这样工作:

$foo = $bar = 'baz'; // which is: $foo = ($bar = 'baz');

>布尔运算是短路运算。如果他们不需要是双方不总是评估。真|| false总是真实的,因为左边的操作数是真的,所以整个表达式必须是真的。 false甚至不在这里评估。

> Operator precedence指示表达式的哪些部分被分组为子表达式。较高优先级运算符与较低优先级运算符之前的操作数分组。

因此:

06001

false || true将被计算,这将导致值true,它被分配给$ e。 ||运算符的优先级高于=,因此false || true被分组到一个表达式中(与($ e = false)|| true相反)。

06002

这里现在或具有比$低的优先级,这意味着赋值操作被分组到一个表达式之前或。所以首先评估$ f = false表达式,其结果为false(见上文)。所以,然后你有简单的表达式false或true,接下来评估,结果为true,但没有人在乎。

评估工作如下:

1. $f = false or true;

2. ($f = false) or true; // precedence grouping

3. false or true; // evaluation of left side ($f is now false)

4. true; // result

现在:

06004

这里,$ foo = 5具有更高的优先级,并被视为一个表达式。因为它出现在or运算符的右侧,所以只有在必要时才评估表达式。这取决于$ foo最初是什么。如果$ foo为true,右侧将不会被计算,因为true或($ foo = 5)必须是整体。如果$ foo最初有一个falsey值,右侧将被评估,5被赋值给$ foo,结果是5,这是true-ish,这意味着整个表达式是真的,没有人关心。

1. $foo or $foo = 5;

2. $foo or ($foo = 5); // precedence grouping

3. false or ($foo = 5); // evaluation of left side

4. false or 5; // evaluation of right side ($foo is now 5)

5. true; // result

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值