• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Smarty ループ回数を 可変にしたい)

Smarty ループ回数を可変にしたい

このQ&Aのポイント
  • Smartyを使用して、多次元配列からリストを表示させたいが、ネストしたループの回数を可変にする方法を知りたい。
  • テンプレート側でループを試みたが、うまくいかなかった。ループの回数は各要素の数に応じて変わる必要がある。
  • 質問:ネストしたループをそれぞれのidまたはtitleの要素数だけループさせるにはどうしたらいいのか?

質問者が選んだベストアンサー

  • ベストアンサー
  • masa6272
  • ベストアンサー率66% (93/140)
回答No.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)))) 括弧、あってるかな?

brosis
質問者

お礼

やはりそうですか。 でも使いこなせばとても便利なものなんですね。 ありがとうございました。

その他の回答 (1)

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.1

{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を使えばできます。

brosis
質問者

お礼

また、参考になる回答をありがとうございました。 Smartyの文法は特徴的ですね。そんなことはないですか? Smartyはまだ勉強し始めでわかってないことが多いのですが、www.smarty.net/manual/ja/ ですべて勉強できますか? 他に参考になるサイトをご教示いただけたら幸いです。

関連するQ&A