Data AとData Bをもとに
Data Cを作成したいのです。
※DataAに無くても、DataBにあるものはDataCに格納したい。
*Data A*
----------------------------
index | indexA | Name
----------------------------
1 100 A_Test1
2 101 A_Test2
3 102 A_Test3
4 103 A_Test4
5 104 A_Test5
6 105 A_Test6
7 106 A_Test7
*Data B*
----------------------------
index | indexA | flg
----------------------------
11 100 1
12 101 0
13 102 1
14 103 1
15 104 1
16 106 0
*Data C* indexAをkeyに結合
-------------------------------
index | ndexA | Name | flg
-------------------------------
1 100 A_Test1 1
2 101 A_Test2 0
3 102 A_Test3 1
4 103 A_Test4 1
5 104 A_Test5 1
6 NULL A_Test6 0
7 106 A_Test7 0
arrayDataA = Array( [0] => Array([indexA]=> 100 [Name] = A_Test1
[1] => Array([indexA]=> 101 [Name] = A_Test2
[2] => Array([indexA]=> 102 [Name] = A_Test3
[3] => Array([indexA]=> 103 [Name] = A_Test4
[4] => Array([indexA]=> 104 [Name] = A_Test5
[5] => Array([indexA]=> 105 [Name] = A_Test6
[6] => Array([indexA]=> 106 [Name] = A_Test7
))
arrayDataB = Array( [0] => Array([indexA]=> 100 [flg] = 1
[1] => Array([indexA]=> 101 [flg] = 0
[2] => Array([indexA]=> 102 [flg] = 1
[3] => Array([indexA]=> 103 [flg] = 1
[4] => Array([indexA]=> 104 [flg] = 1
[5] => Array([indexA]=> 106 [flg] = 1
))
というところまで格納するこはできたのですが
この、arrayDataAとarrayDataBを元に
arrayDataCを作成したいのです。
初歩的なことかと思いますが、
どのように、プログラムを書くと実現できるのでしょうか?
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
なんか非効率的な書き方かもしれませんが、こんな感じでどうでしょう?
これであれば$arrayDataAか$arrayDataBのどちらかに存在すれば
$arrayDataCに収めることができます
<?
$arrayDataA = Array(
'0' => Array('indexA'=> '100', 'Name' => 'A_Test1')
,'1' => Array('indexA'=> '101', 'Name' => 'A_Test2')
,'2' => Array('indexA'=> '103', 'Name' => 'A_Test4')
);
$arrayDataB = Array(
'0' => Array('indexA'=> '100', 'flg' => '1')
,'1' => Array('indexA'=> '101', 'flg' => '0')
,'2' => Array('indexA'=> '102', 'flg' => '1')
);
$arrayDataC=Array();
foreach($arrayDataA as $key=> $array){$indexAlist[$array['indexA']]['AKey']=$key;}
foreach($arrayDataB as $key=> $array){$indexAlist[$array['indexA']]['BKey']=$key;}
ksort($indexAlist);
$count=1;
foreach($indexAlist as $key=> $array){
$C=&$arrayDataC[$count++];
$C['indexA']=$key;
$C['Name']=$arrayDataA[$array['AKey']]['Name'];
$C['flg']=$arrayDataB[$array['BKey']]['flg'];
}
print "<pre>";
print_r($arrayDataC);
print "</pre>";
?>
ちなみに要件のなかに$arrayDataCは1から始まるような指定があったので
そのように対応しましたが、ふつうは配列は0からはじまります
No.2
- 回答日時:
仕様定義がおかしくないですか?
>※DataAに無くても、DataBにあるものはDataCに格納したい。
と書いてありますが、実際には
DataBに無くても、DataAにあるものを表示していますし、しかも
>6 NULL A_Test6 0
となっていますが
6 105 A_Test6 NULL
ではないのですか?
私の理解がおかしいのかもしれませんが、仕様うがはっきり
していないと回答がブレるので・・・
この回答への補足
yambejpさま
ありがとうございます。
すみません。おっしゃる通りです。
矛盾しておりました。
誤)6 NULL A_Test6 0
正)6 105 A_Test6 NULL
としたいのです。
DataBに無くても、DataAにあるものを表示したい。
つまり、DataAをベースに行いたいのです。
No.1
- 回答日時:
泥臭いですが
arrayDataAをforeachで回しながら
arrayDataAのデータをarrayDataCにコピーする
そのforeach文の中でarrayDataBをforeachでまわして
arrayDataBの中にarrayDataAと同じindexAがあるか調べて
無ければarrayDataCのindexAをnullにする
二重ループの中でif文を書く
って形でやればできると思います
できればarrayDataBのforeachは関数にした方が
見栄えはきれいになっていいと思います。
二重ループは見栄えがよくないので
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- Java java final 1 2022/06/10 22:49
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マッチング処理(1:N)
-
PHPで変数名にハイフンを使うに...
-
Excel VBAでフィルター後の対象...
-
三重県南部の温泉
-
配列からプルダウン用のHTMLを生成
-
$_POST受信で必要項目のみを結...
-
Smartyでインクリメント
-
多次元配列を、1次元の配列にす...
-
foreachで上限回数指定方法また...
-
リストボックス複数選択抽出方法
-
配列の値を集めた1つの文字列...
-
配列(int)要素同士の合計、割り算
-
foreachのなかで次のキーを参照...
-
特定の文からメールアドレスの...
-
ファイルの逆読みってできますか?
-
プログラミングのPythonのnoteb...
-
スカラーのベクトル微分
-
CArrayの要素としてCStringArra...
-
C言語でCSVファイルの行数を読...
-
配列を回すとき、最後の要素だ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
smartyのforeachの使い方
-
マッチング処理(1:N)
-
foreachで上限回数指定方法また...
-
多次元配列を、1次元の配列にす...
-
foreachの間にテーブルの<TR>を...
-
PHP、{}記号の意味
-
VB.NET で 二次元のハッシュは...
-
$_POST受信で必要項目のみを結...
-
3つの連想配列を交互に代入し...
-
PHP:ツリー構造をulとli要素に...
-
foreachで配列を、左から縦3列...
-
PHPの構文で間違えが分からない
-
PHPで連想配列のプルダウンメニ...
-
添え字が全て文字列のPHPの多次...
-
テーブルデータ表示
-
Smartyでインクリメント
-
PHPで変数名にハイフンを使うに...
-
POSTで渡されるデータの数がわ...
-
Delphi XEの警告文を消したい
-
配列の要素の値をループ中に変...
おすすめ情報