我使用替代语法为我的视图编写一个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>"; ?>
但是当用崇高的文本 2 写在['id']
周围时,它会显示错误,并['title']
任何想法,因为它们是单引号?
有没有另一种更干净的方法可以写这个?
这样做:
<?php foreach ($index_posts as $post): ?>
<h3>
<a href="post.php?id=<?php echo $post['id']; ?>">
<?php echo $post['title']; ?>
</a>
</h3>
<?php endforeach; ?>
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']);
}
<?php foreach ($index_posts as $post): ?>
<h3>
<a href='post.php/?id=<?=$post['id']?>'>
<?=$post['title']?>
</a>
</h3>
<?php endforeach; ?>
尽可能将其保留为 HTML;除非需要,否则我宁愿不"回显"HTML,尽管这个问题实际上与偏好有关。毕竟,PHP是一种模板语言!
必须帮助一个山姆同胞...
<?php echo "<h3><a href="post.php?id={$post['id']}">{$post['title']}</a></h3>"; ?>