有什么不对的三元运算符?(What's wrong with this ternary op

2019-09-18 05:02发布

我用一个寻呼系统是这样的:

<?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>

任何想法,为什么?

编辑所以,问题是我缺少的echo 。 现在让我来延长这个问题有点...

我需要封装我的整个<ul>里面的<?php ?>标签。 所以,我想的是这样的:

echo "<div id='nav'>";
 echo "<ul>";

   echo "<li><a href='?p=start' /* ternary operator to match if the page I'm on is equal to $currentPageId as defined in the paging system (above), if so set class='active' else do nothing*/>Start</a></li>;
   echo "<li><a href='?p=customers' /* ternary operator to match if the page I'm on is equal to $currentPageId as defined in the paging system (above), if so set class='active' else do nothing*/>Customers</a></li>;


 echo "</ul>";
echo "</div>";

我需要这样做,因为我会根据显示的链接if语句。“如果用户是管理员显示此链接,否则不” ......任何人都得到一个解决方案吗?

Answer 1:

这是因为丢失的回声:

<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>";
}
?>


Answer 2:

正如其他人所指出的那样,你缺失的回声。 我也想指出的是,你甚至不需要一个三元运营商在这种情况下,因为你没有在其他情况下,做任何事情:

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


文章来源: What's wrong with this ternary operator?
标签: php css ternary