【问题标题】:PHP: ternary operator inside include statement, variable undefinedPHP:包含语句中的三元运算符,变量未定义
【发布时间】:2017-10-17 10:24:20
【问题描述】:

我在 include 语句中使用三元运算符检查变量,但变量未定义:

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

也许$altnav 需要回显?但我认为这不能在 include 语句中完成。

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

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

【问题讨论】:

    标签: php variables include ternary-operator


    【解决方案1】:

    由于运算符优先级,您的代码没有按照您的预期执行,如其他答案所示,但假设您使用三元运算符为简洁起见,这里还有几点。

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

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

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

    【讨论】:

      【解决方案2】:

      操作顺序。将三元运算用括号括起来:

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

      没有括号,它会在检查 ? 之前将 '../partials/' 连接到 isset($altnav) 的结果。三元运算符。

      【讨论】:

        猜你喜欢
        • 2022-10-18
        • 1970-01-01
        • 1970-01-01
        • 2018-07-17
        • 1970-01-01
        • 2016-04-25
        • 2016-06-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多