2014-10-16 35 views
-1

的index.php:价值观的foreach不能表明

<?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)不能指示。

+0

你说的 “黑话表示” 是什么意思?它不会迭代?也许'$ post ['child']'不是你想要的数组吗? – arkascha 2014-10-16 10:42:29

+0

检查'd_design.php'中的'$ post'。把$ post 的var_dump放到你需要的文件'd_index.php'并且为'd_design.php'放置代码。我希望它所需的同一个文件只是误将文件名称置疑 – Poonam 2014-10-16 10:45:54

回答

0

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

function loop_posts($posts) { 
 

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

 

 
loop_posts($posts);