2017-05-17 59 views
-2

我检查的包括语句中使用三元运算符的变量,但是变量是不确定的:PHP:三元运算符中包含语句,变量未定义

<?php include('../partials/' . isset($altnav) ? $altnav . '.php' : '_nav.php'); ?> 

也许$altnav需求相呼应?但我认为这不能在包含声明中完成。

我必须创建一个新的变量,并使用两行这样?:操作

<?php $pathpart = isset($altnav) ? $altnav . '.php' : '_nav.php'; 
include('../partials/' . $pathpart); ?> 

回答

2

订单。附上三元操作中括号:

include('../partials/'.(isset($altnav) ? $altnav.'.php' : '_nav.php')); 

如果没有括号,它检查前串接“../partials/”到isset($ altnav)的结果?三元运算符。

1

由于运算符优先级,您的代码没有达到您的预期效果,如其他答案中所示,但假设您使用三元运算符以简化操作,以下是其他几个要点。

  1. 您可以省略外部圆括号。 include不是一个函数,所以它们不是必需的。

  2. 您不需要为此使用三元运算符。 This is the purpose of the null coalescing operator that was added in PHP 7

    include '../partials/' . ($altnav ?? '_nav') . '.php'; 
    
+0

伟大的东西,谢谢! – Galivan