電子書籍の厳選無料作品が豊富!

こんにちは.

本日質問したいのは,Smartyのforeach文について,
nameに変数を割り当てる方法です.

具体的には,foreachをネストして
外のforeachのitemを中のforeachのnameに当てたいのですが,
どうにも上手くできません.

もしも上手いやり方をご存知の方がいらっしゃいましたら,
ご教授頂けると幸いです.

よろしくお願いいたします.

↓ソースの例↓

{foreach from=$type item=v}
  {foreach from=$data[$v] name=$v}
    ここで,内側のforeachのindexを表示したい.
  {/foreach}
{/foreach}

A 回答 (1件)

こんにちは。

簡単なサンプルを書いて見ました。
参考になりますでしょうか。

■test.php
<?php
require_once './libs/Smarty.class.php';

$smarty = new Smarty();

$data = array(
array("a1","a2","a3"),
array("b1","b2","b3"),
array("c1","c2","c3")
);

$smarty->assign('data', $data);
$smarty->display('test.tpl');
?>

■test.tpl
{foreach from=$data item="item" name="name"}

{foreach from=$item item="item2" name="name2"}
{$smarty.foreach.name2.index} : {$item2}<br />
{/foreach}

<hr />

{/foreach}

■出力
0 : a1<br />
1 : a2<br />
2 : a3<br />

<hr />

0 : b1<br />
1 : b2<br />
2 : b3<br />

<hr />

0 : c1<br />
1 : c2<br />
2 : c3<br />

<hr />
    • good
    • 0
この回答へのお礼

なるほど...
自分でも確認してみましたが,
名前が一緒でも新しいforeachだとindexも新しくなるんですね^^;

昔やってみて,indexがつながってしまった記憶がありましたが,
どうも記憶違いだったようですね….

大変参考になりました.
ありがとうございました^^

お礼日時:2012/01/16 01:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!