这个三元运算符有什么问题?

问题描述 投票:0回答:2

我使用这样的分页系统:

<?php
$p = $_GET['p'];

switch($p)
{
    case "start":
        $p = "pages/start.php";
        $currentPageId = 1;
    break;

    case "customers":
        $p = "pages/customers.php";
        $currentPageId = 2;
    break;

    default:
        $p = "pages/start.php";
        $currentPageId = 1;
    break;
}
?>

我想将 css

class="active"
设置为我所在页面的菜单项。

如果我打印这样的
<li>
项目,它就可以工作:

<li><a href="?p=start" <?php if ($currentPageId == 1) {echo "class='active'";}else {} ?>>Start</a></li>

但我想用三元运算符代替。我尝试了这段代码,但它不起作用:

<li><a href="?p=start" <?php ($currentPageId == '1') ? 'class="active"' : '' ?>>Startsida</a></li>

知道为什么吗?

php css active ternary
2个回答
9
投票

您缺少回声:

<li><a href="?p=start" <?php echo (($currentPageId == '1') ? 'class="active"' : '') ?>>Startsida</a></li>

这应该可以解决问题。


解决第二个问题:

<?php
if($something == true) {
    echo "<div id='nav'>"."\n<br>".
            "<ul>"."\n<br>".
                '<li><a href="?p=start"'. (($currentPageId == '1') ? 'class="active"' : '') .'>Startsida</a></li>'."\n<br>".
                '<li><a href="?p=customers" '. (($currentPageId == '1') ? 'class="active"' : '') .' >Customers</a></li>'."\n<br>".
            "</ul>"."\n<br>".
            "</div>"."\n<br>";
}
?>

0
投票

正如其他人指出的那样,您错过了回声。我还想指出,在这种情况下你甚至不需要三元运算符,因为在其他情况下你没有做任何事情:

<li><a href="?p=start" <?php if ($currentPageId == '1') echo 'class="active"'; ?>>Startsida</a></li>
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.