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

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

新規登録して質問してみよう
ただいま回答率
85.48%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

HTML

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1476閲覧

phpで連想配列をtable表示させたい

singlestroke

総合スコア68

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

HTML

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/11/14 08:25

やりたいこと

phpでデータベースに問い合わせして、返ってきた連想配列をHTMLのテーブル表示させたいが、連想配列の形式的に難しい。

返ってきた連想配列

php

1array(27) { 2 [0]=> 3 array(4) { 4 ["m"]=> 5 string(7) "2018-01" 6 ["am"]=> 7 string(2) "10" 8 ["pm"]=> 9 string(2) "20" 10 ["sum"]=> 11 string(3) "30" 12 } 13 [1]=> 14 array(4) { 15 ["m"]=> 16 string(7) "2018-02" 17 ["am"]=> 18 string(2) "11" 19 ["pm"]=> 20 string(2) "21" 21 ["sum"]=> 22 string(3) "32" 23 } 24(略) 25 [10]=> 26 array(4) { 27 ["m"]=> 28 string(7) "2018-11" 29 ["am"]=> 30 string(3) "15" 31 ["pm"]=> 32 string(3) "16" 33 ["sum"]=> 34 string(3) "31" 35 } 36 [11]=> 37 array(4) { 38 ["m"]=> 39 string(7) "2018-12" 40 ["am"]=> 41 string(2) "18" 42 ["pm"]=> 43 string(3) "20" 44 ["sum"]=> 45 string(3) "38" 46 } 47 [12]=> 48 array(4) { 49 ["m"]=> 50 string(7) "2019-01" 51 ["am"]=> 52 string(3) "12" 53 ["pm"]=> 54 string(3) "15" 55 ["sum"]=> 56 string(3) "27" 57 } 58 [13]=> 59 array(4) { 60 ["m"]=> 61 string(7) "2019-02" 62 ["am"]=> 63 string(3) "14" 64 ["pm"]=> 65 string(3) "15" 66 ["sum"]=> 67 string(3) "29" 68 } 69(略) 70 [22]=> 71 array(4) { 72 ["m"]=> 73 string(7) "2019-11" 74 ["am"]=> 75 string(3) "10" 76 ["pm"]=> 77 string(3) "14" 78 ["sum"]=> 79 string(3) "24" 80 } 81 [23]=> 82 array(4) { 83 ["m"]=> 84 string(7) "2019-12" 85 ["am"]=> 86 string(2) "18" 87 ["pm"]=> 88 string(3) "15" 89 ["sum"]=> 90 string(3) "23" 91 } 92(略) 93}

表示させたい形式

|month|2018-01|2018-02|・・・|2018-11|2018-12|
|:--|:--:|--:|
|am|10|11|・・・|15|18|
|pm|20|21|・・・|16|20|
|sum|30|32|・・・|31|38|

|month|2019-01|2019-02|・・・|2019-11|2019-12|
|:--|:--:|--:|
|am|12|14|・・・|10|18|
|pm|15|15|・・・|14|15|
|sum|27|29|・・・|24|23|

やってみたこと

返ってきた連想配列の形式のままでは無理かと思い、年をkeyにして年ごとにmonth、am、pm、sumを分けようと思ったのですができませんでした。

このままの形式でtableに表示可能なのか、連想配列自体の形式を修正しなければいけないのか、また修正するとしたらどのようにしたらよいのか教えていただければと思います。

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

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

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

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

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

guest

回答1

0

ベストアンサー

2018と2019を別の配列に切り分けて、縦軸と横軸を入れ替えてから処理すると良いでしょう

sample

PHP

1$datas=[ 2 [ 3 "m"=>"2018-01", 4 "am"=>"10", 5 "pm"=>"20", 6 "sum"=>"30", 7 ], 8 [ 9 "m"=>"2018-02", 10 "am"=>"11", 11 "pm"=>"21", 12 "sum"=>"32", 13 ], 14 [ 15 "m"=>"2018-11", 16 "am"=>"15", 17 "pm"=>"16", 18 "sum"=>"31", 19 ], 20 [ 21 "m"=>"2018-12", 22 "am"=>"18", 23 "pm"=>"20", 24 "sum"=>"38", 25 ], 26 [ 27 "m"=>"2019-01", 28 "am"=>"12", 29 "pm"=>"15", 30 "sum"=>"27", 31 ], 32 [ 33 "m"=>"2019-02", 34 "am"=>"14", 35 "pm"=>"15", 36 "sum"=>"29", 37 ], 38 [ 39 "m"=>"2019-11", 40 "am"=>"10", 41 "pm"=>"14", 42 "sum"=>"24", 43 ], 44 [ 45 "m"=>"2019-12", 46 "am"=>"18", 47 "pm"=>"15", 48 "sum"=>"23", 49 ], 50 ]; 51$per=4;//ホントは12とかになる? 52$new=array_map(function($x) use($datas){ 53 return array_map(function($y) use($x){ 54 return array_merge([$y],array_map(function($z) use($y){ 55 return $z[$y]; 56 },$x)); 57 },array_keys($datas[0])); 58},array_chunk($datas,$per)); 59print_r($new);

※一部補足をいれました補足

投稿2020/11/14 08:40

編集2020/11/14 14:49
yambejp

総合スコア114843

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

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

singlestroke

2020/11/14 08:48

回答ありがとうございます。array_mapとか使うということでしょうか?
singlestroke

2020/11/14 12:12

ありがとうございました。あなたは神です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問