PHP中echo结合空合并运算符的输出异常问题求助
问题原因与解决方案
这是PHP运算符优先级导致的问题:
- 第一段代码
echo $open_hour ?? 20;中,??(null合并运算符)直接作用于未定义的$open_hour,符合预期返回默认值20。 - 第二段代码
echo "My text ".$open_hour ?? 20;里,字符串连接符.的优先级比??更高,实际执行顺序是先计算"My text " . $open_hour——当$open_hour未定义时,PHP会把它当作空字符串处理,连接结果为"My text "(非null值),因此?? 20的默认值逻辑不会触发,最终输出这个字符串。
修复方案
给$open_hour ?? 20加上括号,强制改变执行优先级:
echo "My text " . ($open_hour ?? 20);
这样会先判断$open_hour是否存在/非null,不存在时使用默认值20,再和前面的字符串拼接,最终输出My text 20。
内容的提问来源于stack exchange,提问作者Trombone0904
相关产品推荐
相关产品推荐

