如何修复PHP字符串拼接中三元运算符的逻辑错误
PHP三元运算拼接错误修复
问题根源
你的单行代码出问题核心是PHP运算符优先级坑:字符串拼接符.的优先级比三元运算符?:高,你没给三元表达式加完整括号,PHP会把: ''后面所有拼接的内容(包括>、$route、闭合标签)全算成三元else分支的返回值,完全打乱了你原本的逻辑。
修复后代码
给整个三元运算套一层括号明确边界就行,和你写的可正常运行的if/else逻辑100%一致:
echo '<nav class="navEl"><a href="' . $route . '" ' . (($_SERVER['REQUEST_URI'] == '/' . $route) ? 'style="color:' . $currentPathColor . '"' : '') . '>' . $route . '</a></nav>';
小提醒
刚学PHP写拼接的时候,只要字符串里嵌三元运算,不管记不记得住优先级,都给整个三元块(判断条件 ? 真结果 : 假结果)外面套一层括号,能避开绝大多数这类莫名其妙的拼接错误。
内容的提问来源于stack exchange,提问作者exefer
相关产品推荐
相关产品推荐

