Php 运算符优先级&&;然后呢?
我读到的是&&B比 为什么设计用于提供可选数组元素的“默认值”的构造不会与该元素紧密绑定Php 运算符优先级&&;然后呢?,php,operator-precedence,Php,Operator Precedence,我读到的是&&B比 为什么设计用于提供可选数组元素的“默认值”的构造不会与该元素紧密绑定 $ok=$ok&&$someArray['optionalElement']??对;//错 $ok=$ok&($someArray['optionalElement']?true);//赖特 来自PHP文档 空合并运算符(??)已添加为语法糖,用于需要将三元运算符与isset()结合使用的常见情况。如果第一个操作数存在且不为空,则返回第一个操作数;否则返回第二个操作数 因此,空合并器将其左边的所有内容都作
$ok=$ok&&$someArray['optionalElement']??对;//错
$ok=$ok&($someArray['optionalElement']?true);//赖特
来自PHP文档
空合并运算符(??)已添加为语法糖,用于需要将三元运算符与isset()结合使用的常见情况。如果第一个操作数存在且不为空,则返回第一个操作数;否则返回第二个操作数
因此,空合并器将其左边的所有内容都作为isset()的表达式参数处理。
因此,$ok&&$someArray['optionalElement']
被视为完整表达式
将($someArray['optionalElement']]?true)
括在括号中只会导致$someArray['optionalElement']]
成为表达式,因此它的工作方式与您预期的一样。来自PHP文档
空合并运算符(??)已添加为语法糖,用于需要将三元运算符与isset()结合使用的常见情况。如果第一个操作数存在且不为空,则返回第一个操作数;否则返回第二个操作数
因此,空合并器将其左边的所有内容都作为isset()的表达式参数处理。
因此,$ok&&$someArray['optionalElement']
被视为完整表达式
将($someArray['optionalElement']]??true)
括在括号中只会导致$someArray['optionalElement']]
成为表达式,因此它的工作方式与您预期的一样