- ベストアンサー
Smarty ループ回数を可変にしたい
- Smartyを使用して、多次元配列からリストを表示させたいが、ネストしたループの回数を可変にする方法を知りたい。
- テンプレート側でループを試みたが、うまくいかなかった。ループの回数は各要素の数に応じて変わる必要がある。
- 質問:ネストしたループをそれぞれのidまたはtitleの要素数だけループさせるにはどうしたらいいのか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
確かに、特徴的かも。 どうも、継ぎはぎで作った感が否めませんね。 Smartyの本も出てますが、やはり最後はマニュアルでしょう。 カスタマイズの辺りは結構面白いです。 sectionは、添え字を抜き出しますので、複数の配列を1つのループの中で扱えます。foreachは、配列を要素に分解しますので、他の配列を同時には分解できません。 この問題に関しては、与えるデータの構造を変えて、foreachで回した方がスマートでは? $data =array( array('date' =>'2008-04-13', array( array('title' => 'aaaaaa', 'id' => 23), array('title' => 'bbbbbb', 'id' => 24), array('title' => 'cccccc', 'id' => 25))), array('date' =>'2008-03-03', array( array('title' => 'dddddd', 'id' => 21), array('title' => 'eeeeee', 'id' => 22)))) 括弧、あってるかな?
その他の回答 (1)
- masa6272
- ベストアンサー率66% (93/140)
{foreach from=$data item=value01 } <dt>{$value01.date}</dt> {section loop=$value01.id name='i'} <dd>{$value01.id[i]}---{$value01.title[i]}</dd> {/section} {/foreach} sectionを使えばできます。
お礼
また、参考になる回答をありがとうございました。 Smartyの文法は特徴的ですね。そんなことはないですか? Smartyはまだ勉強し始めでわかってないことが多いのですが、www.smarty.net/manual/ja/ ですべて勉強できますか? 他に参考になるサイトをご教示いただけたら幸いです。
お礼
やはりそうですか。 でも使いこなせばとても便利なものなんですね。 ありがとうございました。