2009-12-14 36 views
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>'; 
    } 
} 

有沒有更好的方法來解決這個問題?

+0

我相信它應該是''posts'=> array(array('id'=> ..),array('id'=> ..) ,..)'.. – Lukman 2009-12-14 08:24:52

回答

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>"; 
    } 
} 
+0

謝謝盧克曼。我使用了extract(),但從來沒有使用EXTR_PREFIX_ALL - 很好的建議。 – Jeff 2009-12-15 19:02:51

1

除了一個小錯誤:

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

沒有沒有。

對於這個嵌套循環,你的問題是什麼?

+0

$ d ['posts'] [0]不是錯誤 - 沒有[0]第二個foreach不訪問任何變量I需要。 我沒有嵌套循環本身的問題,這似乎是一個混亂的方式去做。 – Jeff 2009-12-14 04:24:16