if 中使用了 ?? 导致预料之外的结果
我在 if 判断中这样用了 ??
$ts = 1696993871;
if ($ts??0 <= time()) { // $ts > time() 的
var_dump(111);
}
// 我预料的结果是 false,应该是不会走到 if 判断中的, 实际打印出了 111
// 我单独打印下面,返回的是 1696993871
var_dump($ts??0 <= time());
其实执行时, 是这样的顺序
$ts ?? ( 0 <= time() ) // $ts 有值则等于自身值,没有取后面括号中的
我们可以这样改下 , 或者不用这种写法
if ( ($ts??0) <= time() ) { // 加括号,改变运算的优先级
var_dump(111);
}
总结
看来,使用语法糖时,还是要慎重一些。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: