我正在使用替代语法为我的视图编写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中写错误的原因,因为它们是单引号?
我还能用其他方式写出更清洁的内容吗?
答案 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>"; ?>