我正在尝试很好地输出一个数据数组(使用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>';
}
}
有没有更好的方法来解决这个问题?
答案 0 :(得分:1)
除了一个小错误:
foreach ($data as $d) {
echo '<h3>'.$d['category_title'].'</h3>';
foreach($d['posts'] as $p) {
echo '<p>'.$p['title'].$p['id'].'</p>';
}
}
没有。
对于这个嵌套循环,你有什么问题?
答案 1 :(得分: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>";
}
}