###実現したいこと
こんな感じのメニューがたくさん並ぶHTMLを考えています。
以下はとりあえず「fluits」だけ書きましたが、「drinks」とかそのようなものがいっぱい並ぶ感じです。(それぞれ構造は一緒ですが、<li>の数が異なります。)
これを、HTML静的にたくさん書くよりも、PHPでやってみたいと思いました。
html
1<div data-main_menu="fluits"> 2 <ul> 3 <li data-sub_menu="fluits_a"> 4 <p>fluits_aのp</p> 5 </li> 6 <li data-sub_menu="fluits_b"> 7 <p>fluits_bのp</p> 8 </li> 9 </ul> 10</div> 11 12<!-- 上の fluits と同様の構造で、 drinks などがたくさん並ぶ -->
###試したこと
あれやこれやと調べてみましたところ、一気に出力する関数を作り、その中で可変的な部分を配列にしておいて、それをforeachで回しながら順に連結して、最後に出力してあげればいいのかな?と思いました。
その結果として下のソースコードになったのですが、いかんせん、初心者すぎて歯が立たず、にっちもさっちもいかなくなってしまったため、書き方を教えて頂ければと思います。宜しくお願い致します。
PHP
1<?php 2// 一気に出力する関数 3function echo_menus(){ 4 5 // <li>の数はfluitsは2つでdrinksは3つ、のように異なる 6 $fluits_a = 'fluits_aのp'; 7 $fluits_b = 'fluits_bのp'; 8 $drinks_a = 'drinks_aのp'; 9 $drinks_b = 'drinks_bのp'; 10 $drinks_c = 'drinks_cのp'; 11 12 $sub_menus = array( 13 'fluits' => array( 14 'fluits_a' => $fluits_a, 15 'fluits_b' => $fluits_b 16 ), 17 'drinks' => array( 18 'drinks_a' => $drinks_a, 19 'drinks_b' => $drinks_b, 20 'drinks_c' => $drinks_c 21 ) 22 ); 23 24 foreach( $sub_menus as $sub_menu ){ 25 26 $ret = '<div data-main_menu="'.$sub_menu.'">'; 27 $ret .= ' <ul>'; 28 29 foreach( $sub_menu as $key=>$k ){ 30 $ret .= ' <li data-sub_menu="'.$key.'">'; 31 $ret .= ' <p>'.$k.'</p>'; 32 $ret .= ' </li>'; 33 } 34 35 $ret .= ' </ul>'; 36 $ret .= '</div>'; 37 } 38 39 echo $ret; 40} 41 42echo_menus(); 43 44?>
回答2件
あなたの回答
tips
プレビュー