我发现自己经常做这种事情:
$foo = true;
$foo = $foo && false; // bool(false)
使用位运算符,您可以使用&=
and|=
简写:
$foo = 1;
$foo &= 0; // int(0)
鉴于 and 上的按位运算在1
功能0
上等同于 and 上的布尔运算true
,false
我们可以依赖类型转换并执行以下操作:
$foo = true;
$foo &= false; // int(0)
$foo = (bool)$foo; // bool(false)
...但这很丑陋并且违背了使用速记赋值语法的目的,因为我们必须使用另一个语句来将类型恢复为布尔值。
我真正想做的是这样的:
$foo = true;
$foo &&= false; // bool(false)
...但&&=
and||=
显然不是有效的运算符。所以,我的问题是 - 是否有其他一些含糖的语法或者可能作为替代品的晦涩的核心功能?对于像 一样短的变量,$foo
仅使用语法并不是什么大问题$foo = $foo && false
,但是具有多个维度的数组元素和/或对象方法调用会使语法变得非常冗长。