下記のコードから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}
回答1件
あなたの回答
tips
プレビュー