【问题标题】:Simple php quote syntax error on echo usage inside echo简单的php引用语法错误在echo中使用echo
【发布时间】:2012-08-31 03:25:24
【问题描述】:

我在创建选定的 php 子菜单类时没有问题,但是当我尝试在子菜单中创建这个子菜单时:我无法让它工作。

问题:echo 中定义echo 会因为引号而返回语法错误。

<ul class="sub_nav">
  <li <?php if ($page=='kurumsal-hakkimizda') {echo "class='selected'";} ?>>
    <a href="<?=BAZ_URL?>/tr/kurumsal-hakkimizda">Hakkımızda</a>
  </li>
  <li <?php if ($page=='kurumsal-ik') {echo "class='selected'";} ?>>
    <a href="<?=BAZ_URL?>/tr/kurumsal-ik">İnsan Kaynakları</a>
    <?php
      if ($page=='kurumsal-ik')
      { echo '
        <ul id="sub_sub_nav">

           <!-- !! PROBLEM STARTS HERE !! -->
           <li class="'if($page=='kurumsal-ik'){echo 'selected'}'">
           <!-- !! CANT USE ECHO INSIDE ECHO BEACUSE OF QUOTES !! -->

            <a href="'.BAZ_URL.'/tr/kurumsal-ik">İnsan Kaynakları Politikamız</a>
           </li>

           <li class="'if($page=='kurumsal-hedef'){echo 'selected'}'">
            <a href="'.BAZ_URL.'/tr/kurumsal-hedef">Kurumsal Hedef</a>
           </li>
        </ul>
     ';}
    ?>
  </li>
  <li <?php if ($page=='kurumsal-haberler') {echo "class='selected'";} ?>>
    <a href="<?=BAZ_URL?>/tr/kurumsal-haberler">Kurumsal Haberler</a>
  </li>
</ul>

【问题讨论】:

  • 我已经像一个小时一样搜索了这个问题的答案,但找不到解决方案,所以我在这里问了。为什么是 -3 ?请解释一下,我下次小心点。
  • 是的,我猜你这边没有错。

标签: php syntax-error quotes submenu


【解决方案1】:

它已经在echo 里面了,对吧?这样做:

<li class="', ($page=='kurumsal-ik') ? 'selected' : '', '">

它确实有效。它被称为ternary operator! :)

注意:此处不能使用点连接运算符,因为三元运算符充当返回值的函数。只能使用逗号,

【讨论】:

  • 逗号是 ?也许你想用一个点来代替它?
  • 不不... 逗号只能放在这里。 . 在这种情况下不起作用。
  • @Cosmin echo 是一种语言结构,您可以向其中传递多个参数,以逗号分隔。
  • @Cosmin 我已经在答案中澄清了你的问题! :)
  • 可以使用点连接,三元运算符只需要用括号括起来,示例见我下面的帖子。
【解决方案2】:

您可以只制作变量并在最后回显它:

<?php
  if ($page=='kurumsal-ik')
  { 
        $myVar= '
    <ul id="sub_sub_nav">
       <li class="';
    if($page=='kurumsal-ik')
    {
        $myVar .= 'selected';
    }
    $myVar.='">
        <a href="'.BAZ_URL.'/tr/kurumsal-ik">İnsan Kaynakları Politikamız</a>
       </li>

       <li class="';
    if($page=='kurumsal-hedef')
    {
        $myVar.= 'selected';
    }
    $myVar.='">
        <a href="'.BAZ_URL.'/tr/kurumsal-hedef">Kurumsal Hedef</a>
       </li>
    </ul>
    ';
    echo $myVar;
   }
?>

【讨论】:

    【解决方案3】:

    正如 Praveen 所说,它已经在回声中,因此无需使用另一个。 我相信 echo 中 ternary operator 的语法是:

    <?php echo '<li class="' . ( $page == 'page_name' ? 'selected' : '' ) . '"><a href="/">Link</a></li>'; ?>
    

    希望对您有所帮助。

    【讨论】:

      【解决方案4】:

      PHP 的一个有用特性是它直接输出&lt;?php?&gt; 标记之外的所有内容,因此您不需要长的回显语句。

      这在与alternative syntax for control structures 结合使用时特别实用

      这样你的代码会更具可读性:

      <?php if($page=='kurumsal-ik'): ?>
          <ul id="sub_sub_nav">
      
          <li class="<?php if($page=='kurumsal-ik') echo 'selected';?>">
              <a href="<?php echo BAZ_URL; ?>/tr/kurumsal-ik">İnsan Kaynakları Politikamız</a>
          </li>
      
          <li class="<?php if($page=='kurumsal-hedef') echo 'selected';?>">
              <a href="<?php echo BAZ_URL; ?>/tr/kurumsal-hedef">Kurumsal Hedef</a>
          </li>
      
          </ul>
      <?php endif; ?>
      

      P。 S。 您可以使用简写&lt;?= 来缩短代码,即&lt;?php echo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-16
        • 1970-01-01
        • 1970-01-01
        • 2013-12-19
        相关资源
        最近更新 更多