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

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

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

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

Q&A

解決済

2回答

860閲覧

配列の形を整えたいです

iorin

総合スコア32

PHP

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

0グッド

0クリップ

投稿2018/02/28 06:53

編集2018/02/28 07:02

前提・実現したいこと

配列の中を組み替えたいです。

DBから取得したデータで以下のような連想配列があります。

$Total = Array( [0] => Array ( [TBL] => Array ( [Cd] => 10001 ) [0] => Array ( [A] => 現金 [B] => 1,000 [C] => 2,000 [D] => 3,000 [E] => 4,000 ) ) [1] => Array ( [TBL] => Array ( [Cd] => 10002 ) [0] => Array ( [A] => 手形 [B] => 1,000 [C] => 2,000 [D] => 3,000 [E] => 4,000 ) ) )

これを以下のように組み替えたいです。

$Total = Array( [0] => Array ( [TBL] => Array ( [Cd] => 10001 [A] => 現金 [B] => 1,000 [C] => 2,000 [D] => 3,000 [E] => 4,000 ) ) [1] => Array ( [TBL] => Array ( [Cd] => 10002 [A] => 手形 [B] => 1,000 [C] => 2,000 [D] => 3,000 [E] => 4,000 ) )

試したこと

foreach ($Total as $WK) { $a['TBL'] = array_merge($WK['TBL'],$WK['0']); } array_pushの処理は以下の通りです。 $Rsl = array(); array_push($Rsl,$a['TBL']);

この処理で

[TBL] => Array ( [Cd] => 10001 [A] => 現金 [B] => 1,000 [C] => 2,000 [D] => 3,000 [E] => 4,000 )

ここまでは形成出来たんですが、array_pushでくっつけると[TBL]というキー名が消えてしまい
添字が0からになってしまいます。

データを取ってくる時にはフォーマットをかけたいので、
SQLは変更せずにPHPで形成するやり方のみで解決したいです。

よろしくお願いします。

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

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

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

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

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

kei344

2018/02/28 06:55

「array_pushでくっつけると」の部分のコードも質問文に追記してください。
iorin

2018/02/28 07:08

追記しました。
guest

回答2

0

php

1<?php 2 3$Total = array( 4 0 => array( 5 'TBL' => array( 6 'Cd' => 10001, 7 ), 8 0 => array( 9 'A' => '現金', 10 'B' => 1000, 11 'C' => 2000, 12 'D' => 3000, 13 'E' => 4000, 14 ), 15 ), 16 1 => array( 17 'TBL' => array( 18 'Cd' => 10002, 19 ), 20 0 => array( 21 'A' => '手形', 22 'B' => 1000, 23 'C' => 2000, 24 'D' => 3000, 25 'E' => 4000, 26 ), 27 ), 28); 29 30$a = array(); 31foreach ($Total as $WK) { 32 $a[] = array( 33 'TBL' => array_merge($WK['TBL'],$WK['0']) 34 ); 35} 36 37var_dump($a);

結果

投稿2018/02/28 07:26

編集2018/02/28 07:27
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

iorin

2018/02/28 07:38

回答ありがとうございました。 こちらのソースでも上手く動作しましたが、ベストアンサーは回答が早かった方につけさせて頂きました。
guest

0

ベストアンサー

PHP

1$Total = Array( 2 0 => Array( 3 'TBL' => Array( 4 'Cd' => 10001 5 ) 6 ,0 => Array( 7 'A' => '現金' 8 ,'B' => 4,000 9 ) 10 ) 11 ,1 => Array( 12 'TBL' => Array( 13 'Cd' => 10002 14 ) 15 ,0 => Array( 16 'A' => '手形' 17 ,'B' => 4,000 18 ) 19 ) 20); 21 22$Rsl = array(); 23foreach ($Total as $WK) { 24 $a = array(); 25 $a['TBL'] = array_merge($WK['TBL'],$WK['0']); 26 $Rsl[] = $a; 27} 28var_dump($Rsl); 29/* 30array(2) { 31 [0]=> 32 array(1) { 33 ["TBL"]=> 34 array(4) { 35 ["Cd"]=> 36 int(10001) 37 ["A"]=> 38 string(6) "現金" 39 ["B"]=> 40 int(4) 41 [0]=> 42 int(0) 43 } 44 } 45 [1]=> 46 array(1) { 47 ["TBL"]=> 48 array(4) { 49 ["Cd"]=> 50 int(10002) 51 ["A"]=> 52 string(6) "手形" 53 ["B"]=> 54 int(4) 55 [0]=> 56 int(0) 57 } 58 } 59} 60*/

投稿2018/02/28 07:24

kei344

総合スコア69364

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

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

iorin

2018/02/28 07:36

ありがとうございました。上手くいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問