我正在尝试使此 IF 语句起作用:
" . ($currentpage == '/adver.php' ? 'active' : '' || $currentpage == 'editad.php' ? 'active' : '' ) . "
我想要做的是,如果$currentpage
是/adver.php
或/editad.php
,那么应该打印出“活动”。
以上不起作用。如何使 IF 语句正常运行?
我正在尝试使此 IF 语句起作用:
" . ($currentpage == '/adver.php' ? 'active' : '' || $currentpage == 'editad.php' ? 'active' : '' ) . "
我想要做的是,如果$currentpage
是/adver.php
或/editad.php
,那么应该打印出“活动”。
以上不起作用。如何使 IF 语句正常运行?
使用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'); ?>>
我相信您错误地使用了三元运算符。
您可能想尝试以下代码:
($currentpage == '/adver.php' || $currentpage == 'editad.php') ? 'active' : ''
请记住,三元运算符的语法如下:
(comparison) ? (if true) : (if false)
因此,完整的比较应该从一开始就进行。无论如何,尽可能考虑使用普通的 if/else,因为三元运算符可能会让作者和读者感到困惑(此外,在这种情况下你并不真的需要 else)。
编辑:我建议使用外星人先生的解决方案。
if($currentpage == "adver.php" || $currentpage == "editad.php") {
echo "Active";
}
如果您坚持使用if
速记,您可以尝试以下操作:
" . ($currentpage == '/adver.php' ? 'active' : ($currentpage == 'editad.php' ? 'active' : '')) . "
或者,你可以这样:
" . (in_array($currentpage, array('/adver.php', 'editad.php')) ? 'active' : '') . "
使用 '(' 和 ')' 有错误
你应该这样使用
" . ($currentpage == '/adver.php') ? 'active' : '' || ($currentpage == 'editad.php') ? 'active' : '' . "
代替
" . ($currentpage == '/adver.php' ? 'active' : '' || $currentpage == 'editad.php' ? 'active' : '') . "