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

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

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

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

HTML

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

Q&A

解決済

2回答

2669閲覧

更新2次元配列に格納された値をTableに出力する方法

dedede_daiou

総合スコア10

PHP

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

HTML

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

0グッド

0クリップ

投稿2020/02/14 20:15

編集2020/02/14 23:51

phpで加工された配列をTableに表示せる方法がわからず困っています。
下の配列内容で記載した
0~2の部分(外側の配列?)の数は毎回変わりますが
0~5の部分(内側の配列?)は数が固定されています。

これを下記のようなテーブルとして表示させたいのですが
どのようにすればよいのでしょうか。

php

1配列の内容 2 3array 4 0 => 5 array 6 0 => リンク先URL 7 1 => 表示する画像のパス 8 2 => 2020/02/11 9 3 => 食パン 10 4 => 小麦粉 11 5 =>12 1 => 13 array 14 0 => リンク先URL 15 1 => 表示する画像のパス 16 2 => 2020/02/11 17 3 => あんパン 18 4 => 小豆 19 5 => 小麦粉 20 2 => 21 array 22 0 => リンク先URL 23 1 => 表示する画像のパス 24 2 => 2020/02/12 25 3 => ジャムパン 26 4 => いちご 27 5 => 小麦粉

html

1 <table border="3"> 2 <tr> 3 <td rowspan="1"><a href="リンク先URL"><img src="画像のパス"></a></td> 4 <td>日付</td> 5 </tr> 6 <tr> 7 <td>商品名</td> 8 </tr> 9 </table>

※追記
簡単なもので恐縮ですが、こういったイメージです。
現在、リンク先は未定のため、リンクは設定しておりませんが
画像をクリックするとリンク先に遷移するイメージで考えています。
イメージ説明

html

1<html> 2<head></head> 3<body> 4 <table border="0"> 5 <tr> 6 <td> 7 8 <table border="3"> 9 <tr> 10 <td rowspan="2"><img src="P001.png"></td> 11 <td>2020/02/11</td> 12 </tr> 13 <tr> 14 <td>食パン</td> 15 </tr> 16 </table> 17 </td> 18 19 <td> 20 <table border="3"> 21 <tr> 22 <td rowspan="2"><img src="P002.png"></td> 23 <td>2020/02/11</td> 24 </tr> 25 <tr> 26 <td>あんパン</td> 27 </tr> 28 </table> 29 </td> 30 31 <td> 32 <table border="3"> 33 <tr> 34 <td rowspan="2"><img src="P003.png"></td> 35 <td>2020/02/12</td> 36 </tr> 37 <tr> 38 <td>ジャムパン</td> 39 </tr> 40 </table> 41 </td> 42 43 </tr> 44 </table> 45</body> 46</html> 47

php

1array ( 0 => array ( 0 => 'https://test/p001/', 1 => 'p001.png', 2 => '2020/02/11', 3 => '食パン', 4 => '小麦粉', 5 => '卵', ), 1 => array ( 0 => 'https://test/p002/', 1 => 'p002.png', 2 => '2020/02/11', 3 => 'あんパン', 4 => '小豆', 5 => '小麦粉', ), 2 => array ( 0 => 'https://test/p003/', 1 => 'p003.png', 2 => '2020/02/12', 3 => 'ジャムパン', 4 => 'いちご', 5 => '小麦粉', ), )

php

1 if(count($array)!=0){ 2 3 $Table = '<table border="3">\n'; 4 5 for ($i = 0; $i < count($array); $i++) { 6 $Table.="<tr>\n"; 7 $Table.='<td rowspan="1">'.?????.'</td>\n'; 8 $Table.="<td>".?????."</td>\n"; 9 $Table.="<tr>/n"; 10 $Table.="<td>".?????."</td>\n"; 11 $Table.="</td>"; 12 } 13 $Table.="</Table>"; 14 }

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

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

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

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

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

m.ts10806

2020/02/14 21:44

「配列の内容」はできればvar_export() の実行結果をご提示ください(コピペで確認できないので)。
m.ts10806

2020/02/14 22:26 編集

それに「どのように表示させたいか」が分かりません。 静的HTML(モック)は作ってますか?あるのでしたらそちらをご提示ください。完成イメージがない状態ではご自身でも対応できないと思います。
dedede_daiou

2020/02/14 22:27

まだ途中経過なもので、簡易的なものしかご提示できませんが追加致しました。
m.ts10806

2020/02/14 22:28

なるほど。テーブルの中にテーブルというのも気にはなりますが、このままだと作業依頼となりますし、まず思ったようにやってみた結果もご提示ください。
dedede_daiou

2020/02/14 23:20 編集

テーブルの中にテーブルが入ってしまっている部分については後ほどcssで対応します。 いったん、縦に並ぶような形にはなりますが、追記のような方法を考えていたのですが ?????の部分をどう書けばいいのかわからず、質問させていただいた次第です。
guest

回答2

0

ベストアンサー

提示のように各枠がテンプレート的な固定要素なら、
そのまま当てはめれば良いと思います。

php

1<?php 2$table_data = array( 3 0 => array( 4 0 => 'https://test/p001/', 5 1 => 'p001.png', 6 2 => '2020/02/11', 7 3 => '食パン', 8 4 => '小麦粉', 9 5 => '卵' 10 ), 11 1 => array( 12 0 => 'https://test/p002/', 13 1 => 'p002.png', 14 2 => '2020/02/11', 15 3 => 'あんパン', 16 4 => '小豆', 17 5 => '小麦粉' 18 ), 19 2 => array( 20 0 => 'https://test/p003/', 21 1 => 'p003.png', 22 2 => '2020/02/12', 23 3 => 'ジャムパン', 24 4 => 'いちご', 25 5 => '小麦粉' 26 ) 27); 28 29?> 30<html> 31<head></head> 32<body> 33 <table border="0"> 34 <tr> 35<?php 36foreach($table_data as $row){ 37 echo <<<EOF 38 <td> 39 <table border="3"> 40 <tr> 41 <td rowspan="2"><img src="{$row[1]}"></td> 42 <td>{$row[2]}</td> 43 </tr> 44 <tr> 45 <td>{$row[3]}</td> 46 </tr> 47 </table> 48 </td> 49 50EOF; 51} 52?> 53 </tr> 54 </table> 55</body> 56</html>

出力結果

html

1<html> 2<head></head> 3<body> 4 <table border="0"> 5 <tr> 6 <td> 7 <table border="3"> 8 <tr> 9 <td rowspan="2"><img src="p001.png"></td> 10 <td>2020/02/11</td> 11 </tr> 12 <tr> 13 <td>食パン</td> 14 </tr> 15 </table> 16 </td> 17 <td> 18 <table border="3"> 19 <tr> 20 <td rowspan="2"><img src="p002.png"></td> 21 <td>2020/02/11</td> 22 </tr> 23 <tr> 24 <td>あんパン</td> 25 </tr> 26 </table> 27 </td> 28 <td> 29 <table border="3"> 30 <tr> 31 <td rowspan="2"><img src="p003.png"></td> 32 <td>2020/02/12</td> 33 </tr> 34 <tr> 35 <td>ジャムパン</td> 36 </tr> 37 </table> 38 </td> 39 </tr> 40 </table> 41</body> 42</html>

イメージ説明
※画像用意してないので×になってます。

投稿2020/02/14 23:53

m.ts10806

総合スコア80854

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

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

dedede_daiou

2020/02/15 00:10

細かい誤りも汲み取っていただきありがとうございます。 初めて知った書き方などもあり、非常に勉強になりました。 ありがとうございました。
guest

0

配列にキーがあった方が後々なにかと便利かなとも思いますが、ひとまずご質問に愚直にお応えすると、こちらでよろしいでしょうか。

PHP

1<?php 2$arrays = [ 3 [ 4 'https://test/p001/', 5 'p001.png', 6 '2020/02/11', 7 '食パン', 8 '小麦粉', 9 '卵' 10 ], 11 [ 12 'https://test/p002/', 13 'p002.png', 14 '2020/02/11', 15 'あんパン', 16 '小豆', 17 '小麦粉' 18 ], 19 [ 20 'https://test/p003/', 21 'p003.png', 22 '2020/02/11', 23 'ジャムパン', 24 'いちご', 25 '小麦粉' 26 ] 27]; 28echo '<table border="0">'.PHP_EOL; 29echo '<tr>'.PHP_EOL; 30foreach ( $arrays as $array ) { 31 echo '<td>'.PHP_EOL; 32 echo '<table border="3">'.PHP_EOL; 33 $i=0; 34 foreach ( $array as $data ) { 35 if ( $i == 0 ) { 36 echo '<tr>'.PHP_EOL; 37 echo '<td rowspan="2">'; 38 } elseif ( $i == 1 ){ 39 echo '<img src="'.$data.'"></td>'.PHP_EOL; 40 } elseif ( $i == 2 ){ 41 echo '<td>'.$data.'</td>'.PHP_EOL; 42 echo '</tr>'.PHP_EOL; 43 } elseif ( $i == 3 ){ 44 echo '<tr>'.PHP_EOL; 45 echo '<td>'.$data.'</td>'.PHP_EOL; 46 echo '</tr>'.PHP_EOL; 47 } 48 $i++; 49 } 50 echo '</table>'.PHP_EOL; 51 echo '</td>'.PHP_EOL; 52} 53echo '</tr>'.PHP_EOL; 54echo '</table>';

上記のコードを実行する

投稿2020/02/14 23:15

ikatako

総合スコア270

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問