• 締切済み

Smartyで多次元配列をスマートに出力するには?

Smartyで多次元配列をスマートに出力するには? ■php側 $array1[1] = 'ショッピング案内'; $array1[2] = 'サイト案内'; $array1[3] = 'お問い合わせ'; $array2[1][1] = '0101'; $array2[1][2] = '0102'; $array2[1][3] = '0103'; $array2[1][4] = '0104'; $array2[1][5] = '0105'; $array2[2][1] = '0201'; $array2[2][2] = '0202'; $array2[2][3] = '0203'; $array2[2][4] = '0204'; $array2[2][5] = '0205'; $array2[2][6] = '0206'; $array2[2][7] = '0207'; $array2[3][1] = '0301'; $array2[3][2] = '0302'; $array2[3][3] = '0303'; $array2[3][4] = '0304'; $array3[1][1] = 'お買い物の流れ'; $array3[1][2] = 'お支払いについて'; $array3[1][3] = '配送について'; $array3[1][4] = '返品・交換について'; $array3[1][5] = 'メールマガジンについて'; $array3[2][1] = 'サイトマップ'; $array3[2][2] = 'このサイトについて'; $array3[2][3] = '販売者概要'; $array3[2][4] = '特定商取引法表記'; $array3[2][5] = 'プライバシーポリシー'; $array3[2][6] = '免責事項'; $array3[2][7] = 'リンクについて'; $array3[3][1] = 'FAQ(よくある質問)'; $array3[3][2] = 'お買い物について質問'; $array3[3][3] = '個別商品について質問'; $array3[3][4] = 'お問合せ対応時間'; $sub_menu = array($array1, $array2, $array3 ); $smarty->assign('SUB_MENU', $sub_menu); ■テンプレート側のサンプル <dl class="side_column"> <dt class="block_title">{$SUB_MENU[0][1]}</dt> <dd class="block_contents"> <ul class="sub_menu"> <li><a href="index.php?contents={$SUB_MENU[1][1][1]}">{$SUB_MENU[2][1][1]}</a></li> <li><a href="index.php?contents={$SUB_MENU[1][1][2]}">{$SUB_MENU[2][1][2]}</a></li> <li><a href="index.php?contents={$SUB_MENU[1][1][3]}">{$SUB_MENU[2][1][3]}</a></li> <li><a href="index.php?contents={$SUB_MENU[1][1][4]}">{$SUB_MENU[2][1][4]}</a></li> <li><a href="index.php?contents={$SUB_MENU[1][1][5]}">{$SUB_MENU[2][1][5]}</a></li> </ul> </dd> </dl> テンプレート側の繰り返し処理の仕方をご教示くださいませ。 もっと効率よくスマートに実現できる方法がありましたらそちらもよろしくお願いします。 どうぞよろしくお願いします。

みんなの回答

  • lunarx
  • ベストアンサー率39% (16/41)
回答No.1

とりあえずループ処理foreachやsectionを使おう。

hanamaru_goo
質問者

お礼

お陰さまで解決いたしました。 ありがとうございます。 ■php側 $array = array( array('0101','お買い物の流れ'), array('0102','お支払いについて'), array('0103','配送について'), array('0104','返品・交換について'), array('0105','メールマガジンについて'), ); $smarty->assign('SUB_MENU_1', $array); ■テンプレート側 <dl class="side_column"> <dt class="block_title">ショッピング案内</dt> <dd class="block_contents"> <ul class="sub_menu"> {section name=row loop=$SUB_MENU_1} <li><a href="index.php?contents={$SUB_MENU_1[row].0}">{$SUB_MENU_1[row].1}</a></li> {/section} </ul> </dd> </dl> 一度にやろうとしていたのがよくなかったみたいです。

hanamaru_goo
質問者

補足

lunarxさん、ありがとうございます。 <dl class="side_column"> <dt class="block_title">{$SUB_MENU[0][1]}</dt> <dd class="block_contents"> <ul class="sub_menu"> {section name=num loop=$SUB_MENU} <li><a href="index.php?contents={$SUB_MENU[num] ***">{$SUB_MENU[num] ***}</a></li> {/section} </ul> </dd> </dl> 上記テンプレートで「***」に入れるものがわかりません。 ちょっと多次元化しすぎたようで・・・ もう少しヒントをいただけませんか?

関連するQ&A