Subversion Repositories php-qbpwcf

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 liveuser 1
<?php
2
 
3
#宣告指派命名空間
4
namespace includeV5{
5
 
6
	#跟問卷整理分析有關的類別
7
	class analyse{
8
 
9
		/*
10
		#涵式說明
11
		#將逗號分隔的字串 "1,2,5,7" 變成 "1,1,0,0,1,0,1" 
12
		#必填的參數:
13
		$conf["stringData"]="";#類似"1,2,5,7"的字串
14
		#可省略的參數:
15
		#$conf["maxOptionNum"]="";#總共有幾個選項?
16
		#$conf["optionNameArray"]=array("a1,a2,a3,b1,b2,c1,d1,d2,d3,e");#選項的名稱依序爲?
17
		*/		
18
		function changeMutiChoiceToSingleChoice($conf){
19
 
20
			#初始化要回傳的內容
21
			$result="";
22
 
23
			#儲存那幾個選項有勾選或未勾選的字串陣列
24
			$strArray=array();
25
 
26
			#如果 $conf["stringData"] 不存在
27
			if(!isset($conf["stringData"])){
28
 
29
				#回傳錯誤訊息
30
				return "\$conf[\"stringData\"]參數未設定";
31
 
32
				}#if end
33
 
34
			#涵式說明:
35
			#將固定格式的字串分開,並回傳分開的結果。
36
			#回傳的參數:
37
			#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
38
			#$result["dataCounts"],爲總共分成幾段
39
			#必填的參數:
40
			$conf["stringProcess"]["spiltString"]["stringIn"]=$conf["stringData"];#要處理的字串。
41
			$conf["stringProcess"]["spiltString"]["spiltSymbol"]=",";#爲以哪個符號作爲分割
42
			$spiledStr=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
43
			unset($conf["stringProcess"]["spiltString"]);
44
 
45
			#檢查變數內容
46
			#var_dump($spiledStr);
47
 
48
			#將字串中的 " 符號去除
49
			#有幾個選項就執行幾次
50
			for($i=0;$i<$spiledStr["dataCounts"];$i++){
51
 
52
				#涵式說明:
53
				#處理字串避免網頁出錯
54
				#回傳的結果:
55
				#$result,爲處理好的字串。
56
				#必天寫的參數:
57
				$conf["stringProcess"]["correctCharacter"]["stringIn"]=$spiledStr["dataArray"][$i];#爲要處理的字串
58
				#可省略的參數:
59
				$conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array("\"");#爲被選擇要處理的字串/字元,須爲陣列值。
60
					#若不設定則預設爲要將這些字串作替換("<",">",";","=","#","*","'","$","%","&","|")。
61
				#$conf["changeTo"];#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
62
				$spiledStr["dataArray"][$i]=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);
63
				unset($conf["stringProcess"]["correctCharacter"]);
64
 
65
				}#for end
66
 
67
			#檢查變數內容
68
			#var_dump($spiledStr);
69
 
70
			#檢查變數內容
71
			#var_dump($conf);
72
 
73
			#如果 $conf["optionNameArray"] 有設定
74
			if(isset($conf["optionNameArray"])){
75
 
76
				#檢查變數內容
77
				#var_dump($conf["optionNameArray"]);
78
 
79
				#取得選項的上限數值
80
				$conf["maxOptionNum"]=count($conf["optionNameArray"]);
81
 
82
				#檢查變數內容
83
				#var_dump($conf["maxOptionNum"]);
84
 
85
				#有幾個選項就執行幾次
86
				for($i=0;$i<$spiledStr["dataCounts"];$i++){
87
 
88
					#取得當前選項的位置
89
					#涵式說明:
90
					#檢查一個數值是否與陣列裏面的元素相同,如果有相同的則會傳其變數內容。
91
					#回傳的結果:
92
					#$result["status"],0表示有找到相同的,1表示沒有找到相同的。
93
					#$result["equalVarName"],相等的變數內容。
94
					#$result["equalVarPosition"],相同的元素內容其位置爲該陣列元素的第幾個位置。
95
					#必填的參數:
96
					$conf["search"]["getEqualVar"]["conditionElement"]=$spiledStr["dataArray"][$i];#條件元素,要等於的元素內容。
97
					$conf["search"]["getEqualVar"]["compareElements"]=$conf["optionNameArray"];#要比對的陣列變數內容。
98
					$search["getEqualVar"]=search::getEqualVar($conf["search"]["getEqualVar"]);
99
 
100
					#檢查變數內容
101
					#var_dump($conf["search"]["getEqualVar"]);
102
 
103
					unset($conf["search"]["getEqualVar"]);
104
 
105
					#檢查變數內容
106
					#var_dump($search["getEqualVar"]);
107
 
108
					#如果 $search["getEqualVar"]["status"] 爲 0
109
					if($search["getEqualVar"]["status"]==0){
110
 
111
						#將其選項勾選處設爲1,表示有選擇
112
						$strArray[$search["getEqualVar"]["equalVarPosition"]]="1";
113
 
114
						#檢查變數內容
115
						#var_dump($search["getEqualVar"]["equalVarPosition"]);
116
 
117
						}#if end
118
 
119
					}#for end
120
 
121
				}#if end
122
 
123
			#反之沒有設定
124
			else{
125
 
126
				#有幾個選項就執行幾次
127
				for($i=0;$i<$spiledStr["dataCounts"];$i++){
128
 
129
					#將有填寫的選項設爲1
130
					#將 $result[["dataArray"][$i]] 設爲 1;
131
					$strArray[$spiledStr["dataArray"][$i]-1]="1";
132
 
133
					}#for end
134
 
135
				}#else end
136
 
137
			#檢查變數內容
138
			#var_dump($strArray);
139
 
140
			#檢查變數內容
141
			#var_dump($conf["maxOptionNum"]);
142
 
143
			#如果 $conf["maxOptionNum"] 有設定
144
			if(isset($conf["maxOptionNum"])){
145
 
146
				#將  $result 陣列中不存在的key指派爲0
147
				for($i=0;$i<$conf["maxOptionNum"];$i++){
148
 
149
					#如果該key不存在
150
					if(!isset($strArray[$i])){
151
 
152
						#則指派其key與 value
153
						$strArray[$i]="0";
154
 
155
						}#if end
156
 
157
					}#for end
158
 
159
				}#if end
160
 
161
			#反之沒有設定
162
			else{
163
 
164
				#檢查變數內容
165
				#var_dump($spiledStr["dataArray"]);
166
 
167
				#尋找 $spiledStr["dataArray"][$i] 陣列中的最大值
168
				#涵式說明:
169
				#找最大值,結果會回傳最大值
170
				#必填的參數:
171
				$conf["math"]["getMaxValue"]["rawDataArray"]=$spiledStr["dataArray"];#爲原始數據
172
				$maxValue=math::getMaxValue($conf["math"]["getMaxValue"]);
173
				unset($conf["math"]["getMaxValue"]);
174
				$maxValue=$maxValue["value"];				
175
 
176
				#檢查變數內容
177
				#var_dump($maxValue);
178
 
179
				#將最大值視爲最後一個選項的號碼
180
				for($i=0;$i<$maxValue;$i++){
181
 
182
					#如果該key不存在
183
					if(!isset($strArray[$i])){
184
 
185
						#則指派其key與 value
186
						$strArray[$i]="0";
187
 
188
						#檢查變數內容
189
						#var_dump($strArray);
190
 
191
						}#if end
192
 
193
					}#for end
194
 
195
				}#else end
196
 
197
			#檢查變數內容
198
			#var_dump($strArray);
199
 
200
			#檢查變數內容
201
			#var_dump((count($strArray)));
202
 
203
			#將 $result 陣列轉爲逗號分隔的字串("1","3","4","7")
204
			#$result陣列有幾個元素,就執行幾次
205
			for($i=0;$i<count($strArray);$i++){
206
 
207
				#檢查變數內容
208
				#var_dump($i);
209
 
210
				#檢查變數內容
211
				#var_dump($result);
212
 
213
				#如果是最後一個元素
214
				if($i==(count($strArray)-1)){
215
 
216
					#檢查變數內容
217
					#var_dump($i);
218
 
219
					#檢查變數內容
220
					#var_dump($result);
221
 
222
					#檢查變數內容
223
					#var_dump($strArray[$i]);
224
 
225
					#串接內容
226
					$result=$result.$strArray[$i];	
227
 
228
					#檢查變數內容
229
					#var_dump($result);	
230
 
231
					}#if end
232
 
233
				#反之不是最後一個元素
234
				else{
235
 
236
					#檢查變數內容
237
					#var_dump($result);
238
 
239
					#檢查變數內容
240
					#var_dump($strArray[$i]);
241
 
242
					#串接內容,結尾用逗號
243
					$result=$result.$strArray[$i].",";
244
 
245
					#檢查變數內容
246
					#var_dump($result);
247
 
248
					}#else end
249
 
250
				}#for end
251
 
252
			#檢查變數的內容
253
			#var_dump($result);
254
 
255
			#回傳結果
256
			return $result;	
257
 
258
			}#function changeMutiChoiceToSingleChoice end 
259
 
260
		/*
261
		#涵式說明:
262
		#讀取csv檔案,一列代表一個選項填寫的情況,然後交由 analyse::changeMutiChoiceToSingleChoice 處理,並將結果寫入新的檔案裏面。
263
		#回傳的結果:
264
		#$result,處理完畢後新檔案的位置
265
		#必填寫的參數:
266
		$conf["oriCsvFileAddAndName"]="";#原始csv檔案的位置
267
		$conf["maxOptionNum"]="";#總共有幾個選項爲?
268
		#可省略的參數
269
		#$conf["newCsvFileAddAndName"]="";#處理好的新csv檔案位置
270
		#$conf["optionNameArray"]=array("a1,a2,a3,b1,b2,c1,d1,d2,d3,e");#選項的名稱依序爲?
271
		*/
272
		function changeMutiChoiceToSingleChoiceFromCsvFile($conf){
273
 
274
			#檢查是否已經執行到這邊
275
			#echo "entered!";
276
 
277
			#如果 $conf["oriCsvFileAddAndName"] 沒有設置
278
			if(!isset($conf["oriCsvFileAddAndName"])){
279
 
280
				#回傳錯誤資訊
281
				return "\$conf[\"oriCsvFileAddAndName\"]參數沒有設置!";
282
 
283
				}#if end
284
 
285
			#如果 $conf["oriCsvFileAddAndName"] 檔案不存在,或無法存取
286
			if(!file_exists($conf["oriCsvFileAddAndName"])){
287
 
288
				#回傳錯誤資訊
289
				return "\$conf[\"oriCsvFileAddAndName\"]檔案不存在,或無法存取,請檢查!";
290
 
291
				}#if end
292
 
293
			#檢查是否已經執行到這邊
294
			#echo "entered!";
295
 
296
			#如果新檔案名稱已設置
297
			if(isset($conf["newCsvFileAddAndName"])){
298
 
299
				#確認新檔案是否不存在
300
				if(!file_exits($conf["newCsvFileAddAndName"])){
301
 
302
					#不存在,所以建立新檔案
303
					#涵式說明:
304
					#將字串寫入到檔案
305
					#回傳的結果:
306
					#$result,true表示檔案建立成功,false表示檔案建立失敗
307
					#必填的參數:
308
					$conf["fileAccess"]["writeTextIntoFile"]["fileName"]=$conf["newCsvFileAddAndName"];#爲要編輯的檔案名稱
309
					$conf["fileAccess"]["writeTextIntoFile"]["inputString"]="";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
310
					#可省略的參數:
311
					#$conf["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
312
					$fileCreateStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
313
					unset($conf["fileAccess"]["writeTextIntoFile"]);
314
 
315
					#如果 $fileCreateStatus 等於 false
316
					if($fileCreateStatus==false){
317
 
318
						#回傳錯誤訊息
319
						return "輸出檔案建立失敗!";
320
 
321
						}#if end			
322
 
323
					}#if end
324
 
325
				}#if end
326
 
327
			#反之沒有設定新檔案的位置與名
328
			else{
329
 
330
				#檢查是否已經執行到這邊
331
				#echo "entered!";
332
 
333
				#在原始檔案路徑下建立新的檔案
334
 
335
				#取得原始檔案路徑有幾個 "/"
336
				$count["pahtSymol"]=substr_count($conf["oriCsvFileAddAndName"],"/");
337
 
338
				#檢查變內容
339
				#var_dump($count["pahtSymol"]);
340
 
341
				#如果 "/" 等於0
342
				if($count["pahtSymol"]==0){
343
 
344
					#按照預設建立新檔案名稱與位置
345
					$conf["newCsvFileAddAndName"]="(已處理過)".$conf["oriCsvFileAddAndName"];
346
 
347
					}#if end
348
 
349
				#如果 "/" 大於0
350
				if($count["pahtSymol"]>0){
351
 
352
					#以 "/" 為分割的依據
353
					#涵式說明:
354
					#將固定格式的字串分開,並回傳分開的結果。
355
					#回傳的參數:
356
					#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
357
					#$result["dataCounts"],爲總共分成幾段
358
					#必填的參數:
359
					$conf["stringProcess"]["spiltString"]["stringIn"]=$conf["oriCsvFileAddAndName"];#要處理的字串。
360
					$conf["stringProcess"]["spiltString"]["spiltSymbol"]="/";#爲以哪個符號作爲分割
361
					$spiltedString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
362
					unset($conf["stringProcess"]["spiltString"]);
363
 
364
					#檢查變數內容
365
					#var_dump($spiltedString);
366
 
367
					#初始化 $conf["newCsvFileAddAndName"]
368
					$conf["newCsvFileAddAndName"]="";
369
 
370
					#有幾段就執行幾次
371
					for($i=0;$i<$spiltedString["dataCounts"];$i++){
372
 
373
						#如果不是最後一段
374
						if($i!=$spiltedString["dataCounts"]-1){
375
 
376
							$conf["newCsvFileAddAndName"]=$conf["newCsvFileAddAndName"].$spiltedString["dataArray"][$i]."/";
377
 
378
							}#if end
379
 
380
						#反之為最後一段
381
						else{
382
 
383
							$conf["newCsvFileAddAndName"]=$conf["newCsvFileAddAndName"]."(已處理過)".$spiltedString["dataArray"][$i];
384
 
385
							}#else end
386
 
387
						}#for end
388
 
389
					#查變數內容
390
					#echo $conf["newCsvFileAddAndName"];
391
 
392
					}#if end
393
 
394
				#不存在,所以建立新檔案
395
				#涵式說明:
396
				#將字串寫入到檔案
397
				#回傳的結果:
398
				#$result,true表示檔案建立成功,false表示檔案建立失敗
399
				#必填的參數:
400
				$conf["fileAccess"]["writeTextIntoFile"]["fileName"]=$conf["newCsvFileAddAndName"];#爲要編輯的檔案名稱
401
				$conf["fileAccess"]["writeTextIntoFile"]["inputString"]="";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
402
				#可省略的參數:
403
				#$conf["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
404
				$fileCreateStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
405
				unset($conf["fileAccess"]["writeTextIntoFile"]);	
406
 
407
				#如果 $fileCreateStatus 等於 false
408
				if($fileCreateStatus==false){
409
 
410
					#回傳錯誤訊息
411
					return "輸出檔案建立失敗!";
412
 
413
					}#if end
414
 
415
				}#else end
416
 
417
			#初始化儲存處理好資訊的陣列
418
			$processedStrArray=array();
419
 
420
			#函式說明:
421
			#依據行號分隔抓取檔案的內容,結果會回傳一個陣列
422
			#回傳的變數說明:
423
			#$result["fileContent"],爲檔案的內容陣列
424
			#$result["lineCount"],爲檔案內容總共的行數
425
			#必填的參數:
426
			$conf["fileAccess"]["getFileContent"]["filePositionAndName"]=$conf["oriCsvFileAddAndName"];#爲檔案的位置以及名稱
427
			#參考資料:
428
			#file():取得檔案內容的行數
429
			#http://php.net/manual/en/function.file.php
430
			$fileGetResult=fileAccess::getFileContent($conf["fileAccess"]["getFileContent"]);
431
			unset($conf["fileAccess"]["getFileContent"]);
432
 
433
			#有幾行內容就執行幾次
434
			for($i=0;$i<$fileGetResult["lineCount"];$i++){
435
 
436
				#涵式說明
437
				#將逗號分隔的字串 "1,2,5,7" 變成 "1,1,0,0,1,0,1" 
438
				#必填的參數:
439
				$conf["analyse"]["changeMutiChoiceToSingleChoice"]["stringData"]=$fileGetResult["fileContent"][$i];#類似"1,2,5,7"的字串
440
				#可省略的參數:
441
 
442
				#如果 $conf["maxOptionNum"] 有設定
443
				if(isset($conf["maxOptionNum"])){
444
 
445
					#則套用之
446
					$conf["analyse"]["changeMutiChoiceToSingleChoice"]["maxOptionNum"]=$conf["maxOptionNum"];#最後一個問項的號碼爲?
447
 
448
					}#if end
449
 
450
				#如果 $conf["optionNameArray"] 有設定
451
				if(isset($conf["optionNameArray"])){
452
 
453
					#則套用之
454
					$conf["analyse"]["changeMutiChoiceToSingleChoice"]["optionNameArray"]=$conf["optionNameArray"];
455
 
456
					}#if end
457
 
458
				$processedStrArray[$i]=analyse::changeMutiChoiceToSingleChoice($conf["analyse"]["changeMutiChoiceToSingleChoice"]);
459
 
460
				#檢查變數內容
461
				#var_dump($conf["analyse"]["changeMutiChoiceToSingleChoice"]["optionNameArray"]);
462
 
463
				unset($conf["analyse"]["changeMutiChoiceToSingleChoice"]);
464
 
465
				}#for end
466
 
467
			#有幾行內容就執行幾次
468
			for($i=0;$i<$fileGetResult["lineCount"];$i++){
469
 
470
				#將取得的結果寫入到新檔案裏面
471
				#涵式說明:
472
				#將字串寫入到檔案
473
				#回傳的結果:
474
				#$result,true表示檔案建立成功,false表示檔案建立失敗
475
				#必填的參數:
476
				$conf["fileAccess"]["writeTextIntoFile"]["fileName"]=$conf["newCsvFileAddAndName"];#爲要編輯的檔案名稱
477
				$conf["fileAccess"]["writeTextIntoFile"]["inputString"]=$processedStrArray[$i]."\r\n";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
478
				#可省略的參數:
479
				$conf["fileAccess"]["writeTextIntoFile"]["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
480
				$fileCreateStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
481
				unset($conf["fileAccess"]["writeTextIntoFile"]);
482
 
483
				}#for end
484
 
485
			#回傳新檔案的位置與名稱
486
			return $conf["newCsvFileAddAndName"];
487
 
488
			}#function changeMutiChoiceToSingleChoiceFromCsvFile end
489
 
490
		/*
491
		#將兩份csv檔案裡面特定一個同名的欄位的數值進行對照,僅留下有相同數值的資料,然後回傳
492
		#必填的參數:
493
		$conf["csvFileA"]="";#第1個csv檔案的位置與名稱
494
		$conf["csvFileB"]="";#第2個csv檔案的位置與名稱
495
		$conf["compareColumnName"]="";#要對照值是否相等的欄位名稱
496
		#可省略的參數:
497
		#$conf["storeFolderName"]="";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
498
		#$conf["csvFileName"]=".csv";#csv檔案的名稱,預設爲系統時間
499
		#$conf["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
500
		*/
501
		function mergePaieedData($conf){
502
 
503
			#涵式說明:
504
			#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
505
			#回傳的結果:
506
			#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
507
			#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
508
			#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
509
			#必填寫的參數:
510
			$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
511
			$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("csvFileA","csvFileB","compareColumnName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
512
			#可以省略的參數:
513
			#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
514
			#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
515
			$checkResult=variableCheck::isexistMuti($conf["variableCheck"]["isexistMuti"]);
516
			unset($conf["variableCheck"]["isexistMuti"]);
517
 
518
			#如果檢查不通過
519
			if($checkResult["passed"]=="false"){
520
 
521
				#回傳錯誤訊息
522
				return $checkResult;
523
 
524
				}#if end
525
 
526
			#初始化要回傳的變數
527
			$result=array();
528
 
529
			#涵式說明:
530
			#讀取csv檔案的內容
531
			#回傳得結果:
532
			#$csvFileContent["line"]["第幾行"]["第幾個欄位"]
533
			#如果 $conf["firstLineVarName"]爲"true"的話則會回傳 $csvFileContent["line"]["第幾行"]["第一行各個欄位的名稱"]
534
			#必填的參數:
535
			$conf["csv"]["loadCsvFile"]["csvFilePositionAndName"]=$conf["csvFileA"];#csv檔案的位置
536
			#可省略的參數:
537
			$conf["csv"]["loadCsvFile"]["firstLineVarName"]="true";#第一行是否爲變數名稱(各個欄位的名稱)
538
			#參考資料來源:
539
			#http://www.php.net/manual/en/function.str-split.php
540
			#參考資料來源
541
			#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
542
			$csvFileContentA=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
543
			unset($conf["csv"]["loadCsvFile"]);
544
 
545
			#涵式說明:
546
			#讀取csv檔案的內容
547
			#回傳得結果:
548
			#$csvFileContent["line"]["第幾行"]["第幾個欄位"]
549
			#如果 $conf["firstLineVarName"]爲"true"的話則會回傳 $csvFileContent["line"]["第幾行"]["第一行各個欄位的名稱"]
550
			#必填的參數:
551
			$conf["csv"]["loadCsvFile"]["csvFilePositionAndName"]=$conf["csvFileB"];#csv檔案的位置
552
			#可省略的參數:
553
			$conf["csv"]["loadCsvFile"]["firstLineVarName"]="true";#第一行是否爲變數名稱(各個欄位的名稱)
554
			#參考資料來源:
555
			#http://www.php.net/manual/en/function.str-split.php
556
			#參考資料來源
557
			#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
558
			$csvFileContentB=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
559
			unset($conf["csv"]["loadCsvFile"]);
560
 
561
			#檢查檔案內容
562
			#print_r($csvFileContentA);
563
			#echo"<p>";
564
			#print_r($csvFileContentB);
565
 
566
			#取得csv檔案A的資料筆數
567
			$DataCountA=count($csvFileContentA["line"]);
568
 
569
			#取得csv檔案B的資料筆數
570
			$DataCountB=count($csvFileContentB["line"]);
571
 
572
			#初始化合併好的陣列變數
573
			$mergedArray=array();
574
 
575
			#初始化計屬的變數
576
			$time=0;
577
 
578
			#針對csv檔案A的每一筆資料
579
			for($i=0;$i<$DataCountA;$i++){
580
 
581
				#針對csv檔案B的每一筆資料
582
				for($j=0;$j<$DataCountB;$j++){
583
 
584
					#如果有發現csv檔案A與檔案B相同欄位的值有相同
585
					if($csvFileContentA["line"][$i][$conf["compareColumnName"]]==$csvFileContentB["line"][$j][$conf["compareColumnName"]]){
586
 
587
						#則將其合併
588
 
589
						#針對檔案A的每一個欄位
590
						foreach($csvFileContentA["line"][$i] as $key=>$value){
591
 
592
							#取得每個欄位的內容
593
							$mergedArray["line"][$time][$key]=$value;
594
 
595
							}#foreach end
596
 
597
						#針對檔案B的每一個欄位
598
						foreach($csvFileContentB["line"][$j] as $key=>$value){
599
 
600
							#如果不是要比較的變數欄位
601
							if($key!=$conf["compareColumnName"]){
602
 
603
								}#if end
604
 
605
							#取得每個欄位的內容
606
							$mergedArray["line"][$time][$key]=$value;
607
 
608
							}#foreach end
609
 
610
						#計數加1
611
						$time++;
612
 
613
						}#if end
614
 
615
					}#for end
616
 
617
				}#for end
618
 
619
			#將合併結果寫入到檔案裡面
620
			#涵式說明:
621
			#快速建立一個csv檔案,並且要求使用者下載。
622
			#回傳的結果:
623
			#如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置
624
			#必填的參數:
625
			$conf["csv"]["create"]["dataArray"]=$mergedArray["line"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
626
			#可省略的參數:
627
 
628
			#如果有設置 $conf["storeFolderName"]
629
			if(isset($conf["storeFolderName"])){
630
 
631
				$conf["csv"]["create"]["storeFolderName"]=$conf["storeFolderName"];
632
 
633
				}#if end
634
 
635
			#如果有設置 $conf["csvFileName"]
636
			if(isset($conf["csvFileName"])){
637
 
638
				$conf["csv"]["create"]["csvFileName"]=$conf["csvFileName"];
639
 
640
				}#if end
641
 
642
			#如果有設置 $conf["noDownload"]
643
			if(isset($conf["noDownload"])){
644
 
645
				#如果其等於 "true"
646
				if($conf["noDownload"]=="true"){
647
 
648
					#設定自動下載檔案
649
					$conf["csv"]["create"]["noDownload"]=$conf["noDownload"];
650
 
651
					}#if end
652
 
653
				}#if end
654
 
655
			#$conf["ssv"]["create"]["storeFolderName"]=".csv";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
656
			#$conf["ssv"]["create"]["csvFileName"]="analyse-mergePaieedData.csv";#csv檔案的名稱,預設爲系統時間
657
			#$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
658
			#參考資料來源:
659
			#http://php.net/manual/en/function.str-split.php
660
			return csv::create($conf["csv"]["create"]);
661
			unset($conf["csv"]["create"]);		
662
 
663
			}#function mergePairedData end
664
 
665
		/*
666
		#涵式說明:
667
		#刪除多個欄位中其數值符合指定條件的資料
668
		#回傳的結果:
669
		#若 $conf["noDownload"] 設為 "true" 則會回傳處理好的相對路徑檔案路徑與名稱
670
		#必填的參數:
671
		$conf["csvFileLocation"]="";#要進行處理的csv位置與名稱
672
		$conf["coditionColumn"]=array();#要檢查的欄位名稱
673
		$conf["coditionValue"]="";#欄位數值內容若等於多少則符合要移除的條件
674
		#可省略的參數:
675
		#$conf["storeFolderName"]="";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
676
		#$conf["csvFileName"]=".csv";#csv檔案的名稱,預設爲系統時間
677
		#$conf["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
678
		*/
679
		function delSepecificData($conf){
680
 
681
			#涵式說明:
682
			#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
683
			#回傳的結果:
684
			#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
685
			#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
686
			#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
687
			#必填寫的參數:
688
			$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
689
			$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("csvFileLocation","coditionColumn","coditionValue");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
690
			#可以省略的參數:
691
			#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
692
			#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
693
			$checkResult=variableCheck::isexistMuti($conf["variableCheck"]["isexistMuti"]);
694
			unset($conf["variableCheck"]["isexistMuti"]);
695
 
696
			#如果檢查不通過
697
			if($checkResult["passed"]=="false"){
698
 
699
				#回傳錯誤訊息
700
				return $checkResult;
701
 
702
				}#if end
703
 
704
			#涵式說明:
705
			#讀取csv檔案的內容
706
			#回傳得結果:
707
			#$csvFileContent["line"]["第幾行"]["第幾個欄位"]
708
			#如果 $conf["firstLineVarName"]爲"true"的話則會回傳 $csvFileContent["line"]["第幾行"]["第一行各個欄位的名稱"]
709
			#必填的參數:
710
			$conf["csv"]["loadCsvFile"]["csvFilePositionAndName"]=$conf["csvFileLocation"];#csv檔案的位置
711
			#可省略的參數:
712
			$conf["csv"]["loadCsvFile"]["firstLineVarName"]="true";#第一行是否爲變數名稱(各個欄位的名稱)
713
			#參考資料來源:
714
			#http://www.php.net/manual/en/function.str-split.php
715
			#參考資料來源
716
			#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
717
			$csvFileContent=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
718
			unset($conf["csv"]["loadCsvFile"]);
719
 
720
			#初始化要紀錄整理好的資料
721
			$arrayData=array();
722
 
723
			#針對每一筆資料
724
			for($i=0;$i<count($csvFileContent["line"]);$i++){
725
 
726
				#初始化是否要移除的變數為 "false"
727
				$del="false";
728
 
729
				#如果是標題列
730
				if($i!=0){
731
 
732
					#針對每一筆資料的各個欄位
733
					foreach($csvFileContent["line"][$i] as $key=>$value){
734
 
735
						#有幾個要檢查的欄位就執行幾次
736
						for($j=0;$j<count($conf["coditionColumn"]);$j++){
737
 
738
							#如果是要檢查的欄位
739
							if($key==$conf["coditionColumn"][$j]){
740
 
741
								#檢查其數值是否等於 $conf["coditionValue"]
742
								if($value==$conf["coditionValue"]){
743
 
744
									#將是否移除的變數設為"true"
745
									$del="true";
746
 
747
									#跳出 for
748
									break;
749
 
750
									}#if end
751
 
752
								}#if end
753
 
754
							}#for end
755
 
756
						}#foreach end
757
 
758
					}#end
759
 
760
				#如果 $del等於 "false"
761
				if($del=="false"){
762
 
763
					#紀錄該筆資料
764
					$arrayData["line"][]=$csvFileContent["line"][$i];
765
 
766
					}#if end
767
 
768
				}#for end
769
 
770
			#測試處理好的資料內容
771
			#return $arrayData;
772
 
773
			#將處理好的內容轉成csv檔
774
			#涵式說明:
775
			#快速建立一個csv檔案,並且要求使用者下載。
776
			#回傳的結果:
777
			#如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置
778
			#必填的參數:
779
			$conf["csv"]["create"]["dataArray"]=$arrayData["line"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
780
			#可省略的參數:
781
 
782
			#如果有設置 $conf["storeFolderName"]
783
			if(isset($conf["storeFolderName"])){
784
 
785
				$conf["csv"]["create"]["storeFolderName"]=$conf["storeFolderName"];
786
 
787
				}#if end
788
 
789
			#如果有設置 $conf["csvFileName"]
790
			if(isset($conf["csvFileName"])){
791
 
792
				$conf["csv"]["create"]["csvFileName"]=$conf["csvFileName"];
793
 
794
				}#if end
795
 
796
			#如果有設置 $conf["noDownload"]
797
			if(isset($conf["noDownload"])){
798
 
799
				#如果其等於 "true"
800
				if($conf["noDownload"]=="true"){
801
 
802
					#設定自動下載檔案
803
					$conf["csv"]["create"]["noDownload"]=$conf["noDownload"];
804
 
805
					}#if end
806
 
807
				}#if end
808
 
809
			#$conf["ssv"]["create"]["storeFolderName"]=".csv";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
810
			#$conf["ssv"]["create"]["csvFileName"]="analyse-mergePaieedData.csv";#csv檔案的名稱,預設爲系統時間
811
			#$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
812
			#參考資料來源:
813
			#http://php.net/manual/en/function.str-split.php
814
			return csv::create($conf["csv"]["create"]);
815
			unset($conf["csv"]["create"]);	
816
 
817
			}#function delSepecificData end
818
 
819
		/*
820
		#涵式說明:
821
		#將一個變數變成兩個變數
822
		#必填的參數:
823
		$conf["csvFileLocation"]="";#csv檔案的位置
824
		$conf["addFromVar"]=array("");#要從哪些元素來產生要新的變數內容		
825
		$conf["newVarName"]="";#資料是新產生的欄位(變數)名稱
826
		$conf["sameValueColumnName"]="";#使用舊有資料的新欄位(變數)名稱
827
		#可省略的參數:
828
		#$conf["newVarValue"]=array();#要增加變數的數值內容陣列,須與$conf["addFromVar"]的元素數量相同。預設與$conf["addFromVar"]相同
829
		#$conf["storeFolderName"]="";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
830
		#$conf["csvFileName"]=".csv";#csv檔案的名稱,預設爲系統時間
831
		#$conf["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
832
		*/
833
		function build2VarForm1($conf){
834
 
835
			#涵式說明:
836
			#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
837
			#回傳的結果:
838
			#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
839
			#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
840
			#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
841
			#必填寫的參數:
842
			$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
843
			$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("csvFileLocation","addFromVar","newVarName","sameValueColumnName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
844
			#可以省略的參數:
845
			#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
846
			#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
847
			$checkResult=variableCheck::isexistMuti($conf["variableCheck"]["isexistMuti"]);
848
			unset($conf["variableCheck"]["isexistMuti"]);
849
 
850
			#如果檢查不通過
851
			if($checkResult["passed"]=="false"){
852
 
853
				#回傳錯誤訊息
854
				return $checkResult;
855
 
856
				}#if end
857
 
858
			#涵式說明:
859
			#讀取csv檔案的內容
860
			#回傳得結果:
861
			#$csvFileContent["line"]["第幾行"]["第幾個欄位"]
862
			#如果 $conf["firstLineVarName"]爲"true"的話則會回傳 $csvFileContent["line"]["第幾行"]["第一行各個欄位的名稱"]
863
			#必填的參數:
864
			$conf["csv"]["loadCsvFile"]["csvFilePositionAndName"]=$conf["csvFileLocation"];#csv檔案的位置
865
			#可省略的參數:
866
			$conf["csv"]["loadCsvFile"]["firstLineVarName"]="true";#第一行是否爲變數名稱(各個欄位的名稱)
867
			#參考資料來源:
868
			#http://www.php.net/manual/en/function.str-split.php
869
			#參考資料來源
870
			#http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
871
			$csvFileContent=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
872
			unset($conf["csv"]["loadCsvFile"]);
873
 
874
			#檢查變數內容
875
			#print_r($csvFileContent["line"][0]);
876
			#print_r($csvFileContent["line"][1]);
877
 
878
			#如果 $conf["newVarValue"] 沒有設定
879
			if(!isset($conf["newVarValue"])){
880
 
881
				#則 $conf["newVarValue"] 設為 $conf["addFromVar"]
882
				$conf["newVarValue"]=$conf["addFromVar"];
883
 
884
				}#if end
885
 
886
			#涵式說明:
887
			#從原始的陣列中將一個變數分成兩個變數,並且新增在原始的陣列中
888
			#回傳的結果:
889
			#經過增加兩個欄位(統計學上的變數)後的陣列變數
890
			#$result[n1][n2],爲第n1行的n2欄位數值內容
891
			#必填的參數:
892
			$conf["math"]["add2Var"]["varArray"]=$csvFileContent["line"];#要處理的陣列變數
893
			$conf["math"]["add2Var"]["addFromVar"]=$conf["addFromVar"];#要從哪些元素來產生要新的變數內容		
894
			$conf["math"]["add2Var"]["newVarName"]=$conf["newVarName"];#要新增的變數(欄位)名稱
895
			$conf["math"]["add2Var"]["newVarValue"]=$conf["newVarValue"];#要增加變數的數值內容陣列,須與$conf["addFromVar"]的元素數量相同。
896
			$conf["math"]["add2Var"]["sameValueColumnName"]=$conf["sameValueColumnName"];#要新增的變數(欄位)名稱
897
			#可省略的參數:
898
			$conf["math"]["add2Var"]["firstLineVarName"]="true";#第一行是否爲變數名稱(各個欄位的名稱)
899
			$addedCsvFile=math::add2Var($conf["math"]["add2Var"]);
900
			unset($conf["math"]["add2Var"]);
901
 
902
			#檢查變數內容
903
			#print_r($addedCsvFile[0]);echo"<p>";
904
 
905
			#檢查變數內容
906
			#print_r($addedCsvFile[1]);echo"<p>";
907
 
908
			#將處理好的內容轉成csv檔
909
			#涵式說明:
910
			#快速建立一個csv檔案,並且要求使用者下載。
911
			#回傳的結果:
912
			#如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置
913
			#必填的參數:
914
			$conf["csv"]["create"]["dataArray"]=$addedCsvFile;#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
915
			#可省略的參數:
916
 
917
			#如果有設置 $conf["storeFolderName"]
918
			if(isset($conf["storeFolderName"])){
919
 
920
				$conf["csv"]["create"]["storeFolderName"]=$conf["storeFolderName"];
921
 
922
				}#if end
923
 
924
			#如果有設置 $conf["csvFileName"]
925
			if(isset($conf["csvFileName"])){
926
 
927
				$conf["csv"]["create"]["csvFileName"]=$conf["csvFileName"];
928
 
929
				}#if end
930
 
931
			#如果有設置 $conf["noDownload"]
932
			if(isset($conf["noDownload"])){
933
 
934
				#如果其等於 "true"
935
				if($conf["noDownload"]=="true"){
936
 
937
					#設定自動下載檔案
938
					$conf["csv"]["create"]["noDownload"]=$conf["noDownload"];
939
 
940
					}#if end
941
 
942
				}#if end
943
 
944
			#$conf["ssv"]["create"]["storeFolderName"]=".csv";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
945
			#$conf["ssv"]["create"]["csvFileName"]="analyse-mergePaieedData.csv";#csv檔案的名稱,預設爲系統時間
946
			#$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
947
			#參考資料來源:
948
			#http://php.net/manual/en/function.str-split.php
949
			return csv::create($conf["csv"]["create"]);
950
			unset($conf["csv"]["create"]);	
951
 
952
			}#function addSample end
953
 
954
		}# analyse 類別結束
955
 
956
	}#namespace includeV5 end
957
 
958
?>