foreach中的值无法表示

时间:2014-10-16 10:39:02

标签: php foreach

的index.php:

<?php
$st = $pdo->query("SELECT * FROM post WHERE parent=0 ORDER BY no DESC");
$posts = $st->fetchAll();
for($i = 0;$i < count($posts); $i++){
    $st = $pdo->query("SELECT * FROM post WHERE parent={$posts[$i]['no']} ORDER BY no");
    $posts[$i]['child'] = $st->fetchAll();
}
require 'd_index.php';
?>

d_design.php:

foreach($posts as $post) { ?>
<div class="post_parent">
    <h3>no:<?php echo $post['no'] . "Title:" . $post['title'] ?></h3> 
    <p><?php echo $post['name'] ?></p>
    <p><?php echo nl2br($post['content']) ?></p>
    <p><a href="form.php?no=<?php echo $post['no'] ?>">comment</a></p>
    <p><small>posted:<?php echo $post['time']  ?></small></p>


    <?php foreach($post['child'] as $child) { ?>
    <div class="post_child">
        <h4>no:<?php echo $child['no'] . "Title:" . $child['title'] ?></h4>
            <p><?php echo $child['name'] ?></p>
            <p><?php echo nl2br($child['content']) ?></p>
            <p><small>posted:<?php echo $child['time']  ?></small></p>

    </div>
    <?php } ?>
</div>
<?php } ?>

我想嵌套foreach,但在此代码中,第二个foreach($child)无法表示。

1 个答案:

答案 0 :(得分:0)

您可以通过循环递归来实现此目的。例如:

&#13;
&#13;
function loop_posts($posts) {

   foreach($posts as $post) {
     echo $post->name;
     if (isset($post['child'])) {
       loop_posts($post['child']);
     }
   }
}


loop_posts($posts);
&#13;
&#13;
&#13;