質問編集履歴

3

訂正

2017/11/27 05:55

投稿

MeB
MeB

スコア104

test CHANGED
File without changes
test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  {
30
30
 
31
- $file_r = dirname(__FILE__) . '/data/server_r.csv';
31
+ $file_r = dirname(__FILE__) . '/data/test.csv';
32
32
 
33
33
 
34
34
 

2

訂正

2017/11/27 05:55

投稿

MeB
MeB

スコア104

test CHANGED
File without changes
test CHANGED
@@ -19,3 +19,141 @@
19
19
  投げやりの質問で申し訳ございません。
20
20
 
21
21
  調べてもよくわかりませんでした…
22
+
23
+
24
+
25
+ ```php
26
+
27
+ function getTest($params_r = [])
28
+
29
+ {
30
+
31
+ $file_r = dirname(__FILE__) . '/data/server_r.csv';
32
+
33
+
34
+
35
+ $result_r = [];
36
+
37
+
38
+
39
+ $source_r = file_get_contents($file_r);
40
+
41
+ $source_r= mb_convert_encoding($source_r, 'UTF-8', 'sjis-win');
42
+
43
+ $temp_r = tmpfile();
44
+
45
+ fwrite($temp_r, $source_r);
46
+
47
+ rewind($temp_r);
48
+
49
+
50
+
51
+ $safe_sort_column_r = [];
52
+
53
+ $is_header_r = true;
54
+
55
+ $_header_r = [];
56
+
57
+ $csv_data_r = [];
58
+
59
+ while(($data_r = fgetcsv($temp_r, 0, ",")) !== FALSE) {
60
+
61
+ if($is_header_r) {
62
+
63
+ $_header_r = $data_r;
64
+
65
+ $is_header_r = false;
66
+
67
+ } else {
68
+
69
+ $_data_r = [];
70
+
71
+ foreach($data_r as $num_r => $value_r) {
72
+
73
+ $column_r = $_header_r[$num_r];
74
+
75
+ if(preg_match("/^sort\:(.+)$/", $column_r, $matches_r)) {
76
+
77
+ $safe_sort_column_r[] = $matches_r[1];
78
+
79
+ }
80
+
81
+ if(is_numeric($value_r)) {
82
+
83
+ $value_r = (int)$value_r;
84
+
85
+ }
86
+
87
+ $_data_r[$column_r] = $value_r;
88
+
89
+ }
90
+
91
+ $csv_data_r[] = $_data_r;
92
+
93
+ }
94
+
95
+ }
96
+
97
+
98
+
99
+ $safe_sort_column_r = array_unique($safe_sort_column_r);
100
+
101
+
102
+
103
+ $order_r = [];
104
+
105
+ $sorter = [];
106
+
107
+ $multisort_text_r = '';
108
+
109
+ foreach($params_r as $column_r => $value_r) {
110
+
111
+ if(! in_array($column_r, $safe_sort_column_r)) {
112
+
113
+ unset($params_r[$column_r]);
114
+
115
+ continue;
116
+
117
+ }
118
+
119
+
120
+
121
+ $multisort_text_r .= '$sorter_r[\'sort:'.$column_r.'\'], ';
122
+
123
+ $multisort_text_r .= ($value_r != 1 ? 'SORT_DESC' : 'SORT_ASC') . ', ';
124
+
125
+
126
+
127
+ foreach($csv_data_r as $key_r => $row_r) {
128
+
129
+ $sorter_r['sort:'.$column_r][$key_r] = $row_r['sort:'.$column_r];
130
+
131
+ }
132
+
133
+ }
134
+
135
+
136
+
137
+ if($multisort_text_r) {
138
+
139
+ eval('array_multisort(' . $multisort_text_r. '$csv_data_r);');
140
+
141
+ }
142
+
143
+
144
+
145
+ fclose($temp_r);
146
+
147
+ unset($_header_r);
148
+
149
+
150
+
151
+ $result_r = $csv_data_r;
152
+
153
+
154
+
155
+ return $result_r;
156
+
157
+ }
158
+
159
+ ```

1

訂正

2017/11/27 05:53

投稿

MeB
MeB

スコア104

test CHANGED
File without changes
test CHANGED
@@ -13,3 +13,9 @@
13
13
 
14
14
 
15
15
  ご教示のほどよろしくお願いいたします。
16
+
17
+
18
+
19
+ 投げやりの質問で申し訳ございません。
20
+
21
+ 調べてもよくわかりませんでした…