- 締切済み
smartyのforeachの使い方がよくわかりません。
Smartyを使ってサイトを作っていて連想配列でネストしている配列を{section}でループさせています。 はじめの配列はうまく取り出せてループできるのですが、ネストした配列の中身を取得して表示させることができません。{section}内でさらに配列の要素をループさせたい場合どのようにしたらよいのでしょうか? print_rの結果はこんな感じです。[test] => Arrayの配列を取り出したいのですがどのようにしたらよいでしょうか? Array ( [0] => Array ( [id] => 7 [postdate] => 2008/02/21/ 06:48:10 [count] => 0 [test] => Array ( [0] => Array ( [id] => 4 [title] => あああああああああ) [1] => Array ( [topicid] => 6 [postdate] => 2008/02/19/ 13:44:41
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yexob328
- ベストアンサー率25% (1/4)
{foreach}も{section}もネスト可能で、あまり使い方は変わりません。 {* 1 *} {foreach item=item from=$arr} {$item} {/foreach} {* 2 *} {section name=name loop=$arr} {$arr[name]} {/section} 1と2は同じ出力結果です。 質問にある配列も{section}{foreach}どちらを使用してもかまわないと思いますが、 {foreach item=item from=$arr key=$key} とすると、{$key}でkeyの値を表示できますので、1つの連想配列の場合は{foreach}の方が便利な印象です。 #1さんがおっしゃるように{foreach}を使用した方が簡単な文になります。 {section loop=$arr name=arr_key} {foreach item=test_arr key=key from=$arr[arr_key].test} {foreach item=test_item key=test_key from=$test_arr} ・{$test_key}:{$test_item}<br> {/foreach} <br> {/foreach} <br> {/section} ***** 出力 ***** ・id:4 ・title:あああああああああ ・topicid:6 ・postdate:2008/02/19/ 13:44:41
- inu2
- ベストアンサー率33% (1229/3720)
{section} ではなく、{foreach}を使ってください 感覚としては、PHPのforeachと同じです 何階層でも、お好きなくらいネストしていってください {foreach name=outer item=contact from=$contacts} <hr /> {foreach key=key item=item from=$contact} {$key}: {$item}<br /> {/foreach} {/foreach}