-1

我正在尝试使此 IF 语句起作用:

" . ($currentpage == '/adver.php' ? 'active' : '' || $currentpage == 'editad.php' ? 'active' : '' ) . "

我想要做的是,如果$currentpage/adver.php/editad.php,那么应该打印出“活动”。

以上不起作用。如何使 IF 语句正常运行?

4

5 回答 5

3

使用basename()with$_SERVER['PHP_SELF']获取当前脚本文件名,然后进行比较

if(basename($_SERVER['PHP_SELF']) == 'adver.php' || basename($_SERVER['PHP_SELF']) == 'editad.php') {
   echo 'class="active"'; //Whatever you want to echo
}

您可以简单地创建一个函数(我经常使用)来获取脚本文件名,例如

function script_name() {
   return basename($_SERVER['PHP_SELF']);
}

现在你可以使用类似的东西

(script_name() == 'index.php') ? '' : '';

当我用它来echo退出活动页面时,我经常使用类似的东西

function is_active($script_name) {
   if(basename($_SERVER['PHP_SELF']) == $script_name) {
      return 'class="active"';
   }
}

现在您可以简单地在菜单中使用上述功能,例如

<a href="index.php" <?php echo is_active('index.php'); ?>>
于 2013-09-06T18:17:54.113 回答
2

我相信您错误地使用了三元运算符

您可能想尝试以下代码:

($currentpage == '/adver.php' || $currentpage == 'editad.php') ? 'active' : ''  

请记住,三元运算符的语法如下:

(comparison) ? (if true) : (if false)

因此,完整的比较应该从一开始就进行。无论如何,尽可能考虑使用普通的 if/else,因为三元运算符可能会让作者和读者感到困惑(此外,在这种情况下你并不真的需要 else)。

编辑:我建议使用外星人先生的解决方案。

于 2013-09-06T18:19:34.870 回答
1
if($currentpage == "adver.php" || $currentpage == "editad.php") {
    echo "Active";
}
于 2013-09-06T18:27:04.487 回答
0

如果您坚持使用if速记,您可以尝试以下操作:

" . ($currentpage == '/adver.php' ? 'active' : ($currentpage == 'editad.php' ? 'active' : '')) . "

或者,你可以这样:

" . (in_array($currentpage, array('/adver.php', 'editad.php')) ? 'active' : '') . "
于 2013-09-06T18:19:18.260 回答
0

使用 '(' 和 ')' 有错误

你应该这样使用

" . ($currentpage == '/adver.php') ? 'active' : '' || ($currentpage == 'editad.php') ? 'active' : ''  . "

代替

" . ($currentpage == '/adver.php' ? 'active' : '' || $currentpage == 'editad.php' ? 'active' : '')  . "
于 2013-09-06T18:22:34.450 回答