如何在<<< _END html标记中使用关联数组?

时间:2011-02-04 03:45:45

标签: php while-loop heredoc

我正在构建自己的小博客平台,作为PHP和MySQL的练习/乐趣/练习。我目前正在使用以下代码输出正确的格式(效果很好):

$rows=mysql_num_rows($postsresult);
for ($j=0 ; $j < $rows ; ++$j){
    $row=mysql_fetch_row($postsresult);

    echo <<<_END
    <div class="titlebox"> $row[3] </div>
    <div class="maincontent"> $row[2]
    <div class="postclosercontainer">
    <div class="postcloser">Sincerely, <br />
    Samuel'<span>Explosion Festival</span>' Shenaniganfest </div>
    </div></div>
_END;
}

但是,我发现while($info=mysql_fetch_array($postsresult){代码更容易编码,因为数据是按名称而不是数组编号存储的(对于任何多个字段,这些数据都会变得更加难以记住)。

我尝试使用之前的while循环更新代码,但发现当我按名称从数组中提取数据时,它不再在&lt;&lt;&lt; _END标记内正常运行。

例如:<div class="titlebox"> $data['title']会产生错误。

有没有办法在&lt;&lt;&lt; _END标签内完成此操作,或者我应该只使用每行的打印功能?另一方面,这是否是正确的编码技术? (我只是个业余爱好者。)

1 个答案:

答案 0 :(得分:2)

更好的是直接编写HTML。这样可以更轻松地维护HTML,并且您可以使用IDE中的功能,例如语法突出显示或代码完成。

示例:

<?php
// your other code    
?>

<?php while(($info=mysql_fetch_array($postsresult))): ?>
    <div class="titlebox"><?php echo $info['title']; ?> </div>
    <div class="maincontent"> 
         <?php echo $info['content']; ?>
         <div class="postclosercontainer">
              <div class="postcloser">Sincerely, <br />
                   Samuel'<span>Explosion Festival</span>' Shenaniganfest
              </div>
         </div>
    </div>
<?php endwhile; ?>

我正在使用alternative syntax for control structures。它在处理HTML时提高了可读性,特别是如果你有嵌套的控制结构(嵌入HTML时更难以发现括号)。