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

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

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

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

Q&A

解決済

2回答

1352閲覧

PHPの配列の整形について

ssk

総合スコア332

PHP

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

0グッド

0クリップ

投稿2017/04/12 06:40

###環境
・PHP7
・MySQL
・リレーショナルデータベース

###やろうとしていること
・CSV出力のための整形
・dbodata02をdbo02にへ上書き
・dbodata20sをdbo19とdbo21の間に挿入

どのように整形するのが最適でしょうか?
・一度、個別に整形してから配列を並び替える方法
http://qiita.com/khsk/items/090291c42ee6e636c6c9

・都度、挿入する方法
http://tips.recatnap.info/wiki/PHP_%E9%85%8D%E5%88%97%E3%81%AE%E4%B8%AD%E3%81%AB%E8%A6%81%E7%B4%A0%E3%82%92%E5%B7%AE%E3%81%97%E8%BE%BC%E3%81%BF%E3%81%9F%E3%81%84(array_splice())

のどちらかだと考えています。
他に良い方法がありましたら、教えていただけると助かります。

よろしくお願いします。
以下、データとCSV出力のための整形コードです。

###出力データ

PHP

1[ 2'id' => (int) 15, 3'dbo02' => 1, 4'dbo18' => 'テキスト', 5'dbo19' => (int) 1, 6'dbo21' => (int) 1, 7'dbodata20s' => [ 8 (int) 0 => [ 9 'dbo20_id' => (int) 2, 10 'name' => '電車', 11 '_joinData' => [ 12 'id' => (int) 41, 13 'dbackorders_id' => (int) 15, 14 'dbo20_id' => (int) 2 15 ] 16 ], 17 (int) 1 => [ 18 'dbo20_id' => (int) 3, 19 'name' => 'バス', 20 '_joinData' => [ 21 'id' => (int) 42, 22 'dbackorders_id' => (int) 15, 23 'dbo20_id' => (int) 3 24 ] 25 ], 26 ], 27 'dbodata02' => [ 28 'dbo02_id' => (int) 1, 29 'name' => '10代' 30 ] 31]

###CSV出力のための整形コード

PHP

1foreach ($results as $data) { 2 $dbo02 = ['dbo02' => $data['dbodata02']['name']]; 3 4 $results = []; 5 foreach($data['dbodata20s'] as $key => $value){ 6 $results[] = $data['dbodata20s'][$key]['name']; 7 } 8 $resultStr = implode(';',$results); 9 $dbo20 = ['dbo20' => $resultStr]; 10 11 $data = array_replace($data,$dbo02,$dbo20); 12 13 unset($data['dbodata02']); 14 unset($data['dbodata20s']); 15 16 fputcsv($fp, $data); 17 } 18```

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

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

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

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

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

guest

回答2

0

自己解決

新しい配列を作成することで対応しました。

投稿2017/04/13 05:30

ssk

総合スコア332

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

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

0

サラッとしか読んでませんが、まずはどちらの方法でもいいので、自分ができる方法で実装しましょう。
その上で問題が発生したら改めて質問をした方がよいと思いますよ。

投稿2017/04/12 07:05

ttyp03

総合スコア16998

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

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

ssk

2017/04/13 05:29

ありがとうございます。 2つとも試してみたのですが、コードに一貫性がないように思いました。 値から新しい配列を生成することにしました。 $data = [ $data['id'], $data['dbo01'], ・ ・ ・ ];
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問