2014-10-16 2 views
-1

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) не может указывать.

+0

Что вы имеете в виду под "не могу указать"? Что он не повторяет? Может быть, '$ post ['child']' не является массивом, как вы ожидаете? – arkascha

+0

проверить '$ post' в' d_design.php'. Поместите var_dump из $ post в требуемый файл 'd_index.php' и поместите код для' d_design.php'. Я надеюсь, что тот же самый файл, который вам нужен, просто ошибся, чтобы поставить имя файла – Poonam

ответ

0

Вы можете добиться этого, сделав свою петлю рекурсивной. Пример:

function loop_posts($posts) { 
 

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

 

 
loop_posts($posts);

Смежные вопросы