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