前提
以下のようなCSVがあります。
"注文番号","商品名","個数","金額","備考","注文金額合計" "1","みかん","5","75","固くてもいいです","1175" "1","りんご","3","100","虫がいないか確かめて下さい","1175" "1","いちご","10","50","熟していないのをください","1175" "2","メロン","1","1000","甘いやつ","1000" "3","りんご","5","100","できるだけ渋いのを","1000" "3","いちご","10","50","小さめで","1000" "4","りんご","10","100","やわらかいのをください","1000" "5","みかん","30","75","すっぱいの","2250" "6","りんご","3","100","青りんご以外","300" "7","りんご","10","100","サン富士に似たのがほしい","7225" "7","いちご","100","50","きれいなかたちのを","7225" "7","みかん","3","75","大きいのだとうれしいです","7225" "7","メロン","1","1000","網が少ないのをください","7225" "8","みかん","5","75","冷凍みかん向け","2625" "8","みかん","30","75","腐ってないか確認して下さい","2625"
やりたいこと
PHPで注文番号「3」のものだけを、
"注文番号","商品名1","個数1","金額1","備考1","商品名2","個数2","金額2","備考2","商品名3","個数3","金額3","備考3","商品名4","個数4","金額4","備考4","注文金額合計"
という形式のデータにしたいのですが、どうしたらよいでしょうか。
やったこと
HTML
1<html> 2<body> 3<form action="sample.php" method="post" enctype="multipart/form-data"> 4 CSVファイル: <input type="file" name="csvfile" size="30" /> <input type="submit" value="アップロード" /> 5</form> 6</body> 7</html>
PHP
1<?php 2 3// CSV読み込み 4if (is_uploaded_file($_FILES["csvfile"]["tmp_name"])) { 5 $file_tmp_name = $_FILES["csvfile"]["tmp_name"]; 6 $file_name = $_FILES["csvfile"]["name"]; 7 8 //拡張子を判定 9 if (pathinfo($file_name, PATHINFO_EXTENSION) != 'csv') { 10 $err_msg = 'CSVファイルのみ対応しています。'; 11 } else { 12 //ファイルをdataディレクトリに移動 13 if (move_uploaded_file($file_tmp_name, "../../../temp/uploaded/" . $file_name)) { 14 //後で削除できるように権限を644に 15 chmod("../../../temp/uploaded/" . $file_name, 0644); 16 $msg = $file_name . "をアップロードしました。"; 17 $file = '../../../temp/uploaded/'.$file_name; 18 $fp = fopen($file, "r"); 19 //配列に変換する 20 while (($data = fgetcsv($fp, 0, ",")) !== FALSE) { 21 $asins[] = $data; 22 } 23 24 mb_convert_variables('UTF-8','SJIS',$asins); 25 fclose($fp); 26 //ファイルの削除 27 unlink('../../../temp/uploaded/'.$file_name); 28 } else { 29 $err_msg = "ファイルをアップロードできません。"; 30 } 31 } 32} else { 33 $err_msg = "ファイルが選択されていません。"; 34} 35 36$order = array($asins[6][0],$asins[6][1],$asins[6][2],$asins[6][3],$asins[6][4],$asins[6][5]); 37echo $order[0] . "" . $order[1] . " " . $order[2] . " " . $order[3] . " " . $order[4] . " " . $order[5]; 38 39?>
CSVを取り込み、指定した行を取り出すところまではできたのですが、この先、同じ注文番号を持つ他の行を統合して、以下のような結果を得るためにどのように考えたら良いのか悩んでおります。
"3","りんご","5","100","できるだけ渋いのを","いちご","10","50","小さめで","","","","","","","","1000"
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー