Php 如何把这个循环写得更漂亮?

Php 如何把这个循环写得更漂亮?,php,mysql,html,Php,Mysql,Html,我刚刚读过这个主题,实际上我使用了几乎相同的结构,但它看起来很糟糕。所以你能给我一个建议,如何在一个php文件中编写这个循环,我指的是同时使用php和html <table class="result"> <?php while ($row= mysql_fetch_array($result, MYSQL_ASSOC)) { $cQuote = highlightWords(htmlspecialchars($row['cQuotes']), $search

我刚刚读过这个主题,实际上我使用了几乎相同的结构,但它看起来很糟糕。所以你能给我一个建议,如何在一个php文件中编写这个循环,我指的是同时使用php和html

<table class="result">
    <?php while ($row= mysql_fetch_array($result, MYSQL_ASSOC)) {
    $cQuote =  highlightWords(htmlspecialchars($row['cQuotes']), $search_result);
    ?>
    <tr>
    <td style="text-align:right; font-size:15px;"><?php h($row['cArabic']); ?></td>
    <td style="font-size:16px;"><?php echo $cQuote; ?></td>
    <td style="font-size:12px;"><?php h($row['vAuthor']); ?></td>
    <td style="font-size:12px; font-style:italic; text-align:right;"><?php h($row['vReference']); ?></td>
    </tr>
<?php } ?>


就个人而言,我会保留HTML部分,仅用于打印值,而不用于数据库连接、调用函数等。大概是这样的:

<?php
$rows = array();
while ($row= mysql_fetch_array($result, MYSQL_ASSOC))
{
    $row['cquote_hi'] = highlightWords(htmlspecialchars($row['cQuotes']), $search_result);
    $rows[] = $row;
}
?>

<table class="result">
    <?php foreach ( $rows as $row ) : ?>
    <tr>
    <td style="text-align:right; font-size:15px;"><?php h($row['cArabic']); ?></td>
    <td style="font-size:16px;"><?php echo $row['cquote_hi']; ?></td>
    <td style="font-size:12px;"><?php h($row['vAuthor']); ?></td>
    <td style="font-size:12px; font-style:italic; text-align:right;"><?php h($row['vReference']); ?></td>
    </tr>
    <?php endforeach; ?>
</table>

如果您的服务器设置允许,您可以使用短标记回显变量:

我不知道h()函数在做什么,但您可以为原始while循环中的每个变量调用它,然后只回显变量。

这就是我的方法:

<?

echo '<table class="result">';

while ($row= mysql_fetch_array($result, MYSQL_ASSOC)) {

    $cQuote =  highlightWords(htmlspecialchars($row['cQuotes']), $search_result);

    echo '
    <tr>
        <td style="text-align:right; font-size:15px;">'.h($row["cArabic"]).'</td>
        <td style="font-size:16px;">'.$cQuote.'</td>
        <td style="font-size:12px;">'.h($row["vAuthor"]).'</td>
        <td style="font-size:12px; font-style:italic; text-align:right;">'.h($row["vReference"]).'</td>
    </tr>';
}

echo '</table>';

?>

我更喜欢将数据库内容与输出分开的概念。我们的web应用程序没有做到这一点,现在我们想要重构它,这简直是一场噩梦。但是,不要使用短标签。曾经您可能会节省一点输入,但是使用长版本的清晰度要好得多(而且无论您的服务器配置是什么都有效)。每个模板语言都会使用某种形式的模板语言,这是有原因的。如果你的应用程序有更多的模板语言,试试php框架吧!它允许您将html与php分离