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

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

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

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

Q&A

解決済

2回答

863閲覧

PHP 配列 分割 再代入等

Fetherion

総合スコア60

PHP

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

0グッド

0クリップ

投稿2018/06/30 13:47

###はじめに
タイトルと内容が少しずれているかもしれず申し訳ありません。
早速ですが、質問を投稿したいと思います。

###デモデータ
下記のデータはデータベースから抽出した時点のデータと思ってください。

php

1$demo[] = ['id' => '1111', 'number' => '1', 'date' => '2018/06/30', 'time' => '09:00:00']; 2$demo[] = ['id' => '1111', 'number' => '3', 'date' => '2018/06/30', 'time' => '12:00:00']; 3$demo[] = ['id' => '2222', 'number' => '7', 'date' => '2018/06/30', 'time' => '09:00:00']; 4$demo[] = ['id' => '3333', 'number' => '3', 'date' => '2018/06/30', 'time' => '12:00:00']; 5$demo[] = ['id' => '3333', 'number' => '4', 'date' => '2018/06/30', 'time' => '13:00:00'];

上記はデータをセットしていますが、上記をvar_dump()した場合

php

1array(5) { 2 [0]=> 3 array(4) { 4 ["id"]=> 5 string(4) "1111" 6 ["number"]=> 7 string(1) "1" 8 ["date"]=> 9 string(10) "2018/06/30" 10 ["time"]=> 11 string(8) "09:00:00" 12 } 13 [1]=> 14 array(4) { 15 ["id"]=> 16 string(4) "1111" 17 ["number"]=> 18 string(1) "3" 19 ["date"]=> 20 string(10) "2018/06/30" 21 ["time"]=> 22 string(8) "12:00:00" 23 } 24 [2]=> 25 array(4) { 26 ["id"]=> 27 string(4) "2222" 28 ["number"]=> 29 string(1) "7" 30 ["date"]=> 31 string(10) "2018/06/30" 32 ["time"]=> 33 string(8) "09:00:00" 34 } 35 [3]=> 36 array(4) { 37 ["id"]=> 38 string(4) "3333" 39 ["number"]=> 40 string(1) "3" 41 ["date"]=> 42 string(10) "2018/06/30" 43 ["time"]=> 44 string(8) "12:00:00" 45 } 46 [4]=> 47 array(4) { 48 ["id"]=> 49 string(4) "3333" 50 ["number"]=> 51 string(1) "4" 52 ["date"]=> 53 string(10) "2018/06/30" 54 ["time"]=> 55 string(8) "13:00:00" 56 } 57}

###今回の質問で行いたいこと

  • ID毎に一つの配列としたい
  • それぞれの配列を一つにまとめなおしたい

###実現したい結果
上記のデモデータから下記のような配列にしたいのです。

php

1array(3) { 2 [0]=> 3 array(2) { 4 [0]=> 5 array(4) { 6 ["id"]=> 7 string(4) "1111" 8 ["number"]=> 9 string(1) "1" 10 ["date"]=> 11 string(10) "2018/06/30" 12 ["time"]=> 13 string(8) "09:00:00" 14 } 15 [1]=> 16 array(4) { 17 ["id"]=> 18 string(4) "1111" 19 ["number"]=> 20 string(1) "3" 21 ["date"]=> 22 string(10) "2018/06/30" 23 ["time"]=> 24 string(8) "12:00:00" 25 } 26 } 27 [1]=> 28 array(1) { 29 [0]=> 30 array(4) { 31 ["id"]=> 32 string(4) "2222" 33 ["number"]=> 34 string(1) "7" 35 ["date"]=> 36 string(10) "2018/06/30" 37 ["time"]=> 38 string(8) "09:00:00" 39 } 40 } 41 [2]=> 42 array(2) { 43 [0]=> 44 array(4) { 45 ["id"]=> 46 string(4) "3333" 47 ["number"]=> 48 string(1) "3" 49 ["date"]=> 50 string(10) "2018/06/30" 51 ["time"]=> 52 string(8) "12:00:00" 53 } 54 [1]=> 55 array(4) { 56 ["id"]=> 57 string(4) "3333" 58 ["number"]=> 59 string(1) "4" 60 ["date"]=> 61 string(10) "2018/06/30" 62 ["time"]=> 63 string(8) "13:00:00" 64 } 65 } 66}

idが変わるところでの処理の仕方などがイマイチわからず悩んでいます。
説明不足などがありましたらご指摘いただければと思います。

尚、データベース側でどうこうしたら?というご指摘があるかと思いますが、今回は抽出したデータをということで考えていただければと思います。

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

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

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

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

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

guest

回答2

0

PHP なら、DB から取り出すときに、近い形に整形できます。
PDOフェッチパターン大全

求めている仕様とは多少違うので、参考まで。

投稿2018/06/30 19:04

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Fetherion

2018/07/01 00:19

フェッチに関してというより、そういった部分がまだまだではありますが、、、 提示いただいたサイトを拝見いたしましたが、本当に参考になりました! いろいろ読み進めて試していってみます!
guest

0

ベストアンサー

php

1<?php 2 3$demo = []; 4$demo[] = ['id' => '1111', 'number' => '1', 'date' => '2018/06/30', 'time' => '09:00:00']; 5$demo[] = ['id' => '1111', 'number' => '3', 'date' => '2018/06/30', 'time' => '12:00:00']; 6$demo[] = ['id' => '2222', 'number' => '7', 'date' => '2018/06/30', 'time' => '09:00:00']; 7$demo[] = ['id' => '3333', 'number' => '3', 'date' => '2018/06/30', 'time' => '12:00:00']; 8$demo[] = ['id' => '3333', 'number' => '4', 'date' => '2018/06/30', 'time' => '13:00:00']; 9 10$arr = []; 11foreach ($demo as $dt) { 12 $id = $dt['id']; 13 $arr[$id][] = $dt; 14} 15 16echo '<pre>'; 17var_dump(array_values($arr)); 18

投稿2018/06/30 13:59

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Fetherion

2018/06/30 14:30

とても素早い回答を感謝いたします。 こうしてみると、ここでは`$id`を利用して配列を作り直す感じにすれば、当然できるな、、、と理解いたしました。 まだまだ発想が全然浮かばず、、、 大変参考になりました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問