質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

3402閲覧

多次元配列をHTMLへ出力したい

Zero0068

総合スコア7

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2015/12/23 04:20

編集2015/12/23 04:37

PHP初心者です。
今、Webサイトを作っているのですが
配列を表示させる事が出来ません。

$menuArray = array( //一部分を記載 array(//[3] array('バイオグラフィ','biography.php','#'),//親ページ[0] array( array('メンバー1','メンバー2','メンバー3','メンバー4'),//子ページの名前 array( 'biography_member_01.php', 'biography_member_02.php', 'biography_member_03.php', 'biography_member_04.php' )//子ページのファイルパス ),//子ページ[1] array('B-3')//ページID[2] ), //一部分を記載 ); PHP

表示させたい所は$menuArray[3][1][1]と$menuArray[3][1][0]です。

その為に

<?php $sitemap_num = 0; //関数の定義 function childPage_put($num,$len){ print('<li>'."\n".'<ul>'."\n"); for($i = 0; $i < $len; $i++){ //配列の要素数だけ処理を繰り返します。 print( '<li><a href="' .$menuArray[$num][1][1][$i]//■ .'">' .$menuArray[$num][1][0][$i]//■ .'</a></li>'."\n" ); }; print('</ul>'."\n".'</li>'."\n"); };//childPage_put() foreach ($menuArray as $d) { //HTMLへ出力 print( '<li><a href="' .$currentPath .$d[0][1]//ファイルパス .'">' .$d[0][0]//項目名 .'</a></li>'."\n"."\t" ); //判定式 if($menuArray[$sitemap_num][1][0] == 'not'){ //子ページが存在しない場合に行われる処理 }else{ //子ページが存在する場合に行われる処理 $sitemap_num = intval($sitemap_num); $len = count($menuArray[$sitemap_num][1][0]);//子ページの配列の要素数 echo($menuArray[$sitemap_num][1][0][0]);//★ childPage_put($sitemap_num,$len); }; $sitemap_num++;//$sitemap_numを1ずつ増やす }//foreach ?> </ul> PHP

という風に書きました。
$menuArrayの$menuArray[X][1][0]の中に'not'とあれば、何も処理を行わず、それ以外は
入れ子リストを作るような処理を書きました。
$menuArray[X][1][0]には何も子ページが無い場合は'not'と書いて、
もし子ページがある場合は一番上の「一部分を記載」のようにさらに配列をつくり、子ページの名前とファイル名を書きました。

★のついている部分はきちんと配列がHTMLに表示されるのですが、
■のついている部分は配列がHTMLに表示されません。

HTMLのソース

1 2 <ul> 3 <li><a href="../index.php">トップページ</a></li> 4 <li><a href="../news.php">ニュース</a></li> 5 <li><a href="../live.php">ライブ情報</a></li> 6 <li><a href="../biography.php">バイオグラフィ</a></li> 7 メンバー1<li> 8<ul> 9<!--ここがきちんと表示してくれません--> 10<li><a href=""></a></li> 11<li><a href=""></a></li> 12<li><a href=""></a></li> 13<li><a href=""></a></li> 14</ul> 15</li> 16<li><a href="../XXXXXXXXXXX.html">コンタクト</a></li> 17 <li><a href="../goods.php">グッズ</a></li> 18 <li><a href="../gallery.php">ギャラリー</a></li> 19 </ul 20HTML

どうやったら表示されるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

変数のスコープの問題に見えます。

関数の中では関数の外の変数は参照できないので、関数の中で
$menuArray
を使いたいのであれば、

PHP

1 function childPage_put($num,$len,$menuArray){

という感じで引数を指定し、呼び出す部分で

PHP

1 childPage_put($sitemap_num,$len,$menuArray);

という感じで引数として与える必要があります。

また、スクリプトの一番先頭に

PHP

1ini_set('display_errors',1); 2error_reporting(E_ALL);

と記述することで詳細なエラーが表示されるようになりますので、開発中は必ずエラーを出力することをお勧めします。殆どの場合、エラーで検索すれば解決します。

投稿2015/12/23 05:09

tanat

総合スコア18709

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zero0068

2015/12/23 05:20

解決しました。ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問