0

我使用替代语法为我的视图编写一个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 围绕 the 编写时,它会显示错误,['id']以及['title']为什么会这样,因为它们是单引号?

还有另一种我可以写这个更清洁的方法吗?

4

4 回答 4

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; ?>
于 2013-11-14T10:01:24.640 回答
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']);
} 
于 2013-11-14T10:02:19.800 回答
1
<?php foreach ($index_posts as $post): ?>
    <h3> 
        <a href='post.php/?id=<?=$post['id']?>'>
           <?=$post['title']?>
        </a>
    </h3> 
<?php endforeach; ?>

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

于 2013-11-14T10:02:05.467 回答
0

得帮助山姆的同胞...

<?php echo "<h3><a href=\"post.php?id={$post['id']}\">{$post['title']}</a></h3>"; ?>
于 2013-11-14T10:01:28.857 回答