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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

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

Q&A

解決済

1回答

1160閲覧

PHPで3つのCSVファイルの使い分けをしたい

MeB

総合スコア104

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

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

0グッド

0クリップ

投稿2017/11/08 10:13

編集2017/11/08 23:53

下記のコードから3つのCSVファイルを使い分けることは可能でしょうか。
現在1つのcsvファイルからテキストを持ってきて表(table)のそれぞれに値を
入れることはできていますsortも実装していますが、その表を3つにしたいと考えています。
最終的には

csvファイル中身を

php

1<?php $service_data = getServiceList($_GET); ?>

みたいな形で
$service_dataに入れるようにしたいです。
この際
$service_dataは
$service_data_1
$service_data_2
$service_data_3
のように分けたいと考えています。
ご助言よろしくお願いいたします。

php

1function getServiceList($params = []) 2{ 3 $file = dirname(__FILE__) . '/data/server_r.csv'; 4 5 $result = []; 6 7 $source = file_get_contents($file); 8 $source = mb_convert_encoding($source, 'UTF-8', 'sjis-win'); 9 $temp = tmpfile(); 10 fwrite($temp, $source); 11 rewind($temp); 12 13 $safe_sort_column = []; 14 $is_header = true; 15 $_header = []; 16 $csv_data = []; 17 while(($data = fgetcsv($temp, 0, ",")) !== FALSE) { 18 if($is_header) { 19 $_header = $data; 20 $is_header = false; 21 } else { 22 $_data = []; 23 foreach($data as $num => $value) { 24 $column = $_header[$num]; 25 if(preg_match("/^sort\:(.+)$/", $column, $matches)) { 26 $safe_sort_column[] = $matches[1]; 27 } 28 if(is_numeric($value)) { 29 $value = (int)$value; 30 } 31 $_data[$column] = $value; 32 } 33 $csv_data[] = $_data; 34 } 35 } 36 37 $safe_sort_column = array_unique($safe_sort_column); 38 39 $order = []; 40 $sorter = []; 41 $multisort_text = ''; 42 foreach($params as $column => $value) { 43 if(! in_array($column, $safe_sort_column)) { 44 unset($params[$column]); 45 continue; 46 } 47 48 $multisort_text .= '$sorter[\'sort:'.$column.'\'], '; 49 $multisort_text .= ($value != 1 ? 'SORT_DESC' : 'SORT_ASC') . ', '; 50 51 foreach($csv_data as $key => $row) { 52 $sorter['sort:'.$column][$key] = $row['sort:'.$column]; 53 } 54 } 55 56 if($multisort_text) { 57 eval('array_multisort(' . $multisort_text. '$csv_data);'); 58 } 59 60 fclose($temp); 61 unset($_header); 62 63 $result = $csv_data; 64 65 return $result; 66}

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

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

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

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

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

kei344

2017/11/08 10:20

質問タグにPHPがありませんが、PHPの質問でしょうか。JavaScriptだとしたら提示するコードを間違っていませんか?
MeB

2017/11/08 10:24 編集

あ、すみません。おもいっきり間違えていました。失礼いたしました
t_obara

2017/11/09 05:59

質問の意図が把握できません。業務上仕様を明らかにできないために曖昧な説明になっているのかもしれませんが、提示された内容から何をしたくて質問をされているのか読み解くことができませんでした。「分けたい」と言っておりますが、それだけだと、分けるように実装すれば良いだけです。分けたいが、どのような問題があって分けられないのか、それが読み取れませんでした。その辺りを補足いただければ、回答しやすいのではないかと思われます。
guest

回答1

0

自己解決

回答者様がおっしゃる通り分けるように実装しました。
楽な方法があればと、頼りきりじゃダメですね・・・。
失礼しました。

投稿2017/11/09 07:11

MeB

総合スコア104

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問