如何嵌套PHP代码块

时间:2013-01-16 07:21:10

标签: php

这段代码坏了,因为我正在嵌套php代码块。这样做的正确方法是什么?

<?php
        if ($prev_ID > $totalRows_totalBoogerRows)
        {
            echo "";
        }
        else
        {
            echo <<<_END
                <div class='paging_button_left paging_button_left_episode'>
                    <a href='episode.php?post_ID=<?php echo $prev_ID; ?>'>
                        <h4 style='text-align: right;'>Ep. <?php echo $prev_ID; ?>
                        </h4>
                    </a>
                </div>"
                _END;
        }
    ?>

我在11行中断,因为我的结束PHP标记关闭了第一行的第一个PHP开始标记(我希望它只关闭第11行的开始PHP标记)。此外,我可能正在使用&lt;&lt;&lt; _END错误。

6 个答案:

答案 0 :(得分:4)

当你回显一个需要插入php变量的字符串时,不要打开和关闭php标签,但要使用字符串连接:

<?php
    if ($prev_ID > $totalRows_totalBoogerRows)
    {
        echo "";
    }
    else
    {
        echo "
            <div class='paging_button_left paging_button_left_episode'>
                <a href='episode.php?post_ID=".$prev_ID."'>
                    <h4 style='text-align: right;'>Ep. ".$prev_ID."</h4>
                </a>
            </div>";
    }
?>

答案 1 :(得分:4)

那你为什么不用这个?

<?php if(something): ?>
   HTML
<?php else: ?>
   HTML
<?php endif ?>

所以:

<?php if ( $prev_ID <= $totalRows_totalBoogerRows ): ?>
    <div class='paging_button_left paging_button_left_episode'>
       <a href='episode.php?post_ID=<?php echo $prev_ID ?>'>
          <h4 style='text-align: right;'>Ep. <?php echo $prev_ID ?></h4>
       </a>
    </div>
<?php endif ?>

答案 2 :(得分:3)

您的heredoc终止令牌_END位置错误。它之前一定不能有任何空白区域。

请参阅PHP.NET手册 String.Syntax.Heredoc 中的警告。

  

非常重要的是要注意,带有结束标识符的行必须不包含其他字符,除了可能是分号(;)。这尤其意味着标识符可能没有缩进,并且在分号之前或之后可能没有任何空格或制表符。同样重要的是要认识到结束标识符之前的第一个字符必须是本地操作系统定义的换行符。这是在UNIX系统上的\ n,包括Mac OS X.结束分隔符(可能后面跟一个分号)后面也必须跟一个换行符。

此外,当您使用heredoc时,字符串将被评估为双引号字符串。所以你可以像这样使用变量。

            echo <<<_END
                <div class='paging_button_left paging_button_left_episode'>
                    <a href='episode.php?post_ID=$prev_ID'>
                        <h4 style='text-align: right;'>Ep. $prev_ID
                        </h4>
                    </a>
                </div>  
_END;

答案 3 :(得分:1)

关闭并重新打开PHP标记

<?php
        if ($prev_ID > $totalRows_totalBoogerRows)
        {
            echo "";
        }
        else
        {?>
                <div class='paging_button_left paging_button_left_episode'>
                    <a href='episode.php?post_ID=<?php echo $prev_ID; ?>'>
                        <h4 style='text-align: right;'>Ep. <?php echo $prev_ID; ?>
                        </h4>
                    </a>
                </div>
        <?php}
    ?>

答案 4 :(得分:0)

试试这个,

<?php
                if ($prev_ID > $totalRows_totalBoogerRows)
                {
                    echo "";
                }
                else
                {
                    echo <<<_END
                        <div class='paging_button_left paging_button_left_episode'>
                            <a href='episode.php?post_ID='.echo $prev_ID;'>
                                <h4 style='text-align: right;'>Ep. echo $prev_ID;
                                </h4>
                            </a>
                        </div>"
                        _END;
                }
            ?>

答案 5 :(得分:0)

试试这个:

if ($prev_ID > $totalRows_totalBoogerRows)
    {
        echo "";
    }
    else
    {
        echo "                
               <div class='paging_button_left paging_button_left_episode'>
                  <a href='episode.php?post_ID=\"$prev_ID\"'>
                     <h4 style='text-align: right;'>Ep. \"$prev_ID\"
                     </h4>
                  </a>
                </div>
             ";
    }