0

我试图很好地输出一个数据数组(使用 Kohana v2.3.4),并且我认为必须有一种更有效和更优雅的方式来做到这一点。我的数组如下所示:

array('category_id' => value, 'category_title' => value, 'posts' => array( 'id' => value, 'title' => value, ... ))

以下是我在视图中的输出方式(为简单起见,此示例中省略了一些数组值):

foreach($data as $d) {
    echo '<h3>'.$d['category_title'].'</h3>';
    foreach($d['posts'][0] as $p) {
        echo '<p>'.$p['title'].$p['id'].'</p>';
    }
}

有没有更好的方法来处理我拥有的数组?

4

2 回答 2

1

除了一个小错误:

foreach ($data as $d) {
  echo '<h3>'.$d['category_title'].'</h3>';
  foreach($d['posts'] as $p) {
    echo '<p>'.$p['title'].$p['id'].'</p>';
  }
}

不,没有。

您对此的嵌套循环有什么问题?

于 2009-12-14T04:11:52.710 回答
1

您无法摆脱使用嵌套循环(除非您使用 array_walk 等),但您可以通过利用变量替换来避免使用大量字符串连接:

foreach($data as $d) {
    echo "<h3>{$d['category_title']}</h3>";
    foreach($d_posts[0] as $p) {
        echo "<p>{$p['title']} {$p['id']}</p>";
    }
}

您还可以将它与 extract() 结合使用以获得更清晰的字符串:

foreach($data as $d) {
    extract($d, EXTR_PREFIX_ALL, 'd_');
    echo "<h3>$d_category_title</h3>";
    foreach($d_posts[0] as $p) {
        extract($p, EXTR_PREFIX_ALL, 'p_');
        echo "<p>$p_title $p_id</p>";
    }
}
于 2009-12-14T08:38:14.333 回答