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