我在include语句中使用三元运算符检查变量,但变量变为未定义:
<?php include('../partials/' . isset($altnav) ? $altnav . '.php' : '_nav.php'); ?>
也许$altnav
需要回应?但我不认为可以在include语句中完成。
我是否必须创建一个新变量并使用这样的两行?:
<?php $pathpart = isset($altnav) ? $altnav . '.php' : '_nav.php';
include('../partials/' . $pathpart ); ?>
答案 0 :(得分:2)
操作顺序。将三元运算括在括号中:
include('../partials/'.(isset($altnav) ? $altnav.'.php' : '_nav.php'));
没有括号,它会连接&#39; ../ partials /&#39;检查之前到isset($ altnav)的结果?三元运算符。
答案 1 :(得分:1)
由于运算符优先级,您的代码没有达到预期的效果,如另一个答案中所示,但假设您使用三元运算符是为了简洁起见,这里还有其他几点。
您可以省略外括号。 include
不是函数,因此不需要它们。
您不需要使用三元运算符。 This is the purpose of the null coalescing operator that was added in PHP 7
include '../partials/' . ($altnav ?? '_nav') . '.php';