使用替代语法和关联数组时的清洁代码。

时间:2013-11-14 09:58:36

标签: php foreach

我正在使用替代语法为我的视图编写foreach循环,以获取这样的html

<h3><a href="post.php/?id=1">My Post</a></h3>

我已经使用了以下这一行,但它似乎非常笨拙的所有连接。

<?php   
    foreach ($index_posts as $post):
?>

<h3><?= "<a href='post.php/?id='". $post['id'] . ">" . $post['title'] . "</a>"; ?></h3> 

<?php
    endforeach;
?>

我也尝试这样写:

<?= "<a href='post.php/?id=$post['id']'>$post['title']</a>"; ?>

但它显示了在['id']['title']周围的崇高文字2中写错误的原因,因为它们是单引号?

我还能用其他方式写出更清洁的内容吗?

4 个答案:

答案 0 :(得分:5)

你可以这样做:

<?php foreach ($index_posts as $post): ?>

<h3>
  <a href="post.php?id=<?php echo $post['id']; ?>">
    <?php echo $post['title']; ?>
  </a>
</h3> 

<?php endforeach; ?>

答案 1 :(得分:2)

Sublime在您执行此操作时显示错误的原因

<?= "<a href='post.php/?id=$post['id']'>$post['title']</a>"; ?>

是因为它是一个语法错误,因为您不能将复杂的变量(如带键的字符串的数组值)直接插入到字符串中,就像这样。您需要将它们包装在{}

<?= "<a href='post.php/?id={$post['id']}'>{$post['title']}</a>"; ?>

或者,您可以使用:

foreach ($posts as $post) {
    printf('<a href="post.php/?id=%s">%s</a>', $post['id'], $post['title']);
} 

答案 2 :(得分:1)

<?php foreach ($index_posts as $post): ?>
    <h3> 
        <a href='post.php/?id=<?=$post['id']?>'>
           <?=$post['title']?>
        </a>
    </h3> 
<?php endforeach; ?>

尽可能保持HTML;除非需要,否则我更喜欢不“回显”HTML,尽管这个问题确实非常偏好。毕竟,PHP是一种模板语言!

答案 3 :(得分:0)

要帮助一个山姆...

<?php echo "<h3><a href=\"post.php?id={$post['id']}\">{$post['title']}</a></h3>"; ?>