Subversion Repositories php-qbpwcf

Rev

Rev 48 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 liveuser 1
<?php
2
 
3
/*
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
6
    Copyright (C) 2015~2025 Min-Jhin,Chen
7
 
8
    This file is part of QBPWCF.
9
 
10
    QBPWCF is free software: you can redistribute it and/or modify
11
    it under the terms of the GNU General Public License as published by
12
    the Free Software Foundation, either version 3 of the License, or
13
    (at your option) any later version.
14
 
15
    QBPWCF is distributed in the hope that it will be useful,
16
    but WITHOUT ANY WARRANTY; without even the implied warranty of
17
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
    GNU General Public License for more details.
19
 
20
    You should have received a copy of the GNU General Public License
21
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.
22
 
23
*/
24
namespace qbpwcf;
25
 
26
/*
27
類別說明:
28
跟陣列處理相關的類別.
29
備註:
30
無.
31
*/
32
class arrays{
33
 
34
	/*
35
	#函式說明:
36
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
37
	#回傳結果:
38
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
39
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
40
	#$result["function"],當前執行的函式名稱.
41
	#必填參數:
42
	#$method,物件,為物件實體或類別名稱,會自動置入該參數.
43
	#$arguments,陣列,為呼叫方法時所用的參數.
44
	#參考資料:
45
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
46
	*/
47
	public function __call($method,$arguments){
48
 
49
		#取得當前執行的函式
50
		$result["function"]=__FUNCTION__;
51
 
52
		#設置執行不正常
53
		$result["status"]="false";
54
 
55
		#設置執行錯誤
56
		$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";
57
 
58
		#設置所丟入的參數
59
		$result["error"][]=$arguments;
60
 
61
		#回傳結果
62
		return $result;
63
 
64
		}#function __call end
65
 
66
	/*
67
	#函式說明:
68
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
69
	#回傳結果:
70
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
71
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
72
	#$result["function"],當前執行的函式名稱.
73
	#必填參數:
74
	#$method,物件,為物件實體或類別名稱,會自動置入該參數.
75
	#$arguments,陣列,為呼叫方法時所用的參數.
76
	#參考資料:
77
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
78
	*/
79
	public static function __callStatic($method,$arguments){
80
 
81
		#取得當前執行的函式
82
		$result["function"]=__FUNCTION__;
83
 
84
		#設置執行不正常
85
		$result["status"]="false";
86
 
87
		#設置執行錯誤
88
		$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";
89
 
90
		#設置所丟入的參數
91
		$result["error"][]=$arguments;
92
 
93
		#回傳結果
94
		return $result;
95
 
96
		}#function __callStatic end
97
 
98
	/*
99
	#函式說明:
100
	#建立一個陣列,可以指派陣列的內容,然後回傳
101
	#回傳的結果:
102
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
103
	#$result["function"],當前執行的函數名稱.
104
	#$result["error"],錯誤訊息陣列.
105
	#$result["argu"],使用的參數.
106
	#$result["content"],爲陣列變數內容
107
	#必填參數:
108
	#$conf["arrayContent"],陣列,陣列元素的內容,須爲陣列值。
109
	$conf["arrayContent"]=array();
110
	#可省略參數:
111
	#$conf["arrayCounts"],字串,爲陣列的元素有幾個,若沒設定,則數量爲$conf["arrayContent"]裏的元素數量.
112
	#$conf["arrayCounts"]="";
113
	#$conf["theSameAs"],字串,若設爲"true",則所有元素內容都跟第一個元素內容相同.
114
	#$conf["theSameAs"]="true";
115
	#參考資料:
116
	#無.
117
	#備註:
118
	#無.
119
	*/
120
	public static function create(&$conf){
121
 
122
		#初始化要回傳的變數
123
		$result=array();
124
 
125
		#初始化要回傳的變數
126
		$result["content"]=array();
127
 
128
		#取得當前執行的函數名稱
129
		$result["function"]=__FUNCTION__;
130
 
131
		#取得參數
132
		$result["argu"]=$conf;
133
 
134
		#如果 $conf 不為陣列
135
		if(gettype($conf)!="array"){
136
 
137
			#設置執行失敗
138
			$result["status"]="false";
139
 
140
			#設置執行錯誤訊息
141
			$result["error"][]="\$conf變數須為陣列形態";
142
 
143
			#如果傳入的參數為 null
144
			if($conf==null){
145
 
146
				#設置執行錯誤訊息
147
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
148
 
149
				}#if end
150
 
151
			#回傳結果
152
			return $result;
153
 
154
			}#if end
155
 
156
		#函式說明:
157
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
158
		#回傳的結果:
159
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
160
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
161
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
162
		#必填寫的參數:
163
		$conf["arrays"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
164
		$conf["arrays"]["isexistMuti"]["variableCheck"]=array("arrayContent");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
165
		#可以省略的參數:
166
		$conf["variableType"]=array("array");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
167
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
168
		$checkResult=variableCheck::isexistMulti($conf["arrays"]["isexistMuti"]);
169
		unset($conf["arrays"]["isexistMuti"]);
170
 
171
		#如果 $checkResult 執行失敗
172
		if($checkResult["status"]=="false"){
173
 
174
			#設置執行不正常
175
			$result["status"]="false";
176
 
177
			#設置執行錯誤訊息
178
			$result["error"]=$checkResult;
179
 
180
			#回傳結果
181
			return $result;
182
 
183
			}#if end
184
 
185
		#如果參數檢查有誤
186
		if($checkResult["passed"]=="false"){
187
 
188
			#設置執行不正常
189
			$result["status"]="false";
190
 
191
			#設置執行錯誤訊息
192
			$result["error"]=$checkResult;
193
 
194
			#回傳結果
195
			return $result;
196
 
197
			}#if end
198
 
199
		#如果 $conf["arrayCounts"] 與 $conf["theSameAs"] 有設定
200
		if(isset($conf["arrayCounts"]) && isset($conf["theSameAs"])){
201
 
202
			#如果 $conf["theSameAs"] 爲 "true"
203
			if($conf["theSameAs"]=="true"){
204
 
205
				#執行 $conf["arrayCounts"] 次
206
				for($i=0;$i<$conf["arrayCounts"];$i++){
207
 
208
					#放置陣列元素
209
					$result["content"][$i]=$conf["arrayContent"][0];
210
 
211
					}#for end
212
 
213
				}#if end
214
 
215
			#反之
216
			else{
217
 
218
				echo"<p>請搭配\$conf[\"theSameAs\"]參數使用!<p>";
219
 
220
				}#else end
221
 
222
			}#else end
223
 
224
		#反之依據給於的元素數量去給與陣列內容的數量
225
		else{
226
 
227
			#執行 count($conf["arrayContent"]) 次
228
			for($i=0;$i<count($conf["arrayContent"]);$i++){
229
 
230
				#放置陣列元素
231
				$result["content"][$i]=$conf["arrayContent"][$i];
232
 
233
				}#for end
234
 
235
			}#else end
236
 
237
		#執行到這邊代表執行正常
238
		$result["status"]="true";
239
 
240
		#回傳結果
241
		return $result;
242
 
243
		}#function create end
244
 
245
	/*
246
	#函式說明:
247
	#將陣列的key重新排序,然後回傳,以便後續存取,也可以指定key的內容,但一定要跟元素數量相同。
248
	#回傳的解果:
249
	#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
250
	#$result["error"],執行錯誤的訊息.
251
	#$result["function"],當前執行的函數名稱.
252
	#$result["dataContent"],儲存陣列元素的內容.若指定了key的名稱,則 $result["dataContent"] 會變成 $result["dataContent"]["指定的key名稱"]
253
	#$result["dataCount"],儲存陣列元素的數量.
254
	#必填參數:
255
	#$conf["arrayContent"],陣列,陣列變數.
256
	$conf["arrayContent"]=array();
257
	#可省略參數:
258
	#$conf["specifiesKeyArray"],陣列,指定key的名稱,須與$conf["arrayContent"]的元素數量相同.
259
	#$conf["specifiesKeyArray"]=array();
260
	#參考資料:
261
	#無.
262
	#備註:
263
	#無.
264
	*/
265
	public static function createV2(&$conf){
266
 
267
		#初始化要回傳的變數
268
		$result=array();
269
 
270
		#取得當前執行的函數名稱
271
		$result["function"]=__FUNCTION__;
272
 
273
		#如果 $conf 不為陣列
274
		if(gettype($conf)!="array"){
275
 
276
			#設置執行失敗
277
			$result["status"]="false";
278
 
279
			#設置執行錯誤訊息
280
			$result["error"][]="\$conf變數須為陣列形態";
281
 
282
			#如果傳入的參數為 null
283
			if($conf==null){
284
 
285
				#設置執行錯誤訊息
286
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
287
 
288
				}#if end
289
 
290
			#回傳結果
291
			return $result;
292
 
293
			}#if end
294
 
295
		#如果 $conf["arrayContent"] 不存在
296
		if(!isset($conf["arrayContent"])){
297
 
298
			#設置執行錯誤
299
			$result["status"]="false";
300
 
301
			#設置錯誤訊息
302
			$result["error"][]="參數\$conf[\"arrayContent\"]未設置!";
303
 
304
			#回傳結果
305
			return $result;
306
 
307
			}#if end
308
 
309
		#如果 $conf["arrayContent"] 存在
310
		if(isset($conf["arrayContent"])){
311
 
312
			#檢查 $conf["arrayContent"] 形態是否正確
313
			#回傳的結果:
314
			#$result["status"],執行是否正常
315
			#$result["error"].錯誤訊息陣列
316
			#$result["passed"],若爲"true"則表示形態正確,"false"為形態有誤.
317
			#$result["function"],當前執行的函數名稱.
318
			#必填參數:
319
			$conf_checkType["vName"]=$conf["arrayContent"];#要檢查的變數
320
			$conf_checkType["vType"]="array";#變數的形態
321
			$checkType=variableCheck::checkType($conf_checkType);
322
			unset($conf_checkType);
323
 
324
			#如果檢查形態失敗
325
			if($checkType["status"]=="false"){
326
 
327
				#設置執行失敗
328
				$result["status"]="false";
329
 
330
				#設置執行錯誤
331
				$result["error"]=$checkType;
332
 
333
				#回傳結果
334
				return $result;
335
 
336
				}#if end
337
 
338
			#如果檢查形態不通過
339
			if($checkType["passed"]=="false"){
340
 
341
				#設置執行失敗
342
				$result["status"]="false";
343
 
344
				#設置執行錯誤
345
				$result["error"]=$checkType;
346
 
347
				#回傳結果
348
				return $result;
349
 
350
				}#if end
351
 
352
			}#if end
353
 
354
		#初始化計數變數
355
		$times=0;
356
 
357
		#針對每個陣列元素
358
		foreach($conf["arrayContent"] as $arrayContentKey=>$arrayContentValue){
359
 
360
			#如果有指定 $conf["specifiesKeyArray"]
361
			if(isset($conf["specifiesKeyArray"])){
362
 
363
				#檢查有無進入該判斷式
364
				#echo "<p>entered!<p>";
365
 
366
				#則指派key的名稱
367
				#將其指派到 $result["dataContent"] 陣列裏面
368
				$result["dataContent"][$conf["specifiesKeyArray"][$times]]=$arrayContentValue;
369
 
370
				#檢查變數內容
371
				#var_dump($result);
372
 
373
				#計數加1
374
				$times++;
375
 
376
				}#if end
377
 
378
			#反之,按照預設的key
379
			else{
380
 
381
				#將其指派到 $result["dataContent"] 陣列裏面
382
				$result["dataContent"][]=$arrayContentValue;
383
 
384
				}#else end
385
 
386
			}#foreach end
387
 
388
		#取得陣列元素的數量
389
		$result["dataCount"]=count($result["dataContent"]);
390
 
391
		#執行到這邊代表執行正常
392
		$result["status"]="true";
393
 
394
		#回傳結果
395
		return $result;
396
 
397
		}#function end
398
 
399
	/*
400
	#函式說明:
401
	#建立連續整數的陣列
402
	#回傳的結果:
403
	#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
404
	#$result["error"],錯誤訊息陣列
405
	#$result["function"],當前執行的函數名稱
406
	#$result["counts"],爲整數陣列裏面有幾個元素。
407
	#$result["content"],爲整數陣列元素的內容。
408
	#必填參數:
409
	#$conf["end"],字串/整數,爲整數陣列的結束點.
410
	$conf["end"]="";
411
	#可省略參數
412
	#$conf["start"],字串/整數,爲整數陣列的起始點,預設爲從"1"開始。
413
	#$conf["start"]="";
414
	#參考資料
415
	#無.
416
	#備註:
417
	#無.
418
	*/
419
	public static function createIntArray(&$conf){
420
 
421
		#初始化要回傳的結果
422
		$result=array();
423
 
424
		#取得當前執行的函數名稱
425
		$result["function"]=__FUNCTION__;
426
 
427
		#如果 $conf 不為陣列
428
		if(gettype($conf)!="array"){
429
 
430
			#設置執行失敗
431
			$result["status"]="false";
432
 
433
			#設置執行錯誤訊息
434
			$result["error"][]="\$conf變數須為陣列形態";
435
 
436
			#如果傳入的參數為 null
437
			if($conf==null){
438
 
439
				#設置執行錯誤訊息
440
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
441
 
442
				}#if end
443
 
444
			#回傳結果
445
			return $result;
446
 
447
			}#if end
448
 
449
		#如果 $conf["end"] 參數未設置
450
		if(!isset($conf["end"])){
451
 
452
			#設置執行失敗
453
			$result["status"]="false";
454
 
455
			#設置錯誤訊息
456
			$result["error"][]="\$conf[\"end\"]未設置!";
457
 
458
			#回傳結果
459
			return $result;
460
 
461
			}#if end
462
 
463
		#如果 $conf["start"] 參數未設置
464
		if(!isset($conf["start"])){
465
 
466
			#則預設設爲"1"
467
			$conf["start"]=1;
468
 
469
			}#if end
470
 
471
		#執行 $conf["end"]-$conf["start"]+1 次
472
		for($i=(int)($conf["start"]);$i<=$conf["end"];$i++){
473
 
474
			#指派陣列元素
475
			$result["content"][]=$i;
476
 
477
			}#for end
478
 
479
		#設置執行成功
480
		$result["status"]="true";
481
 
482
		#取得陣列元素的數量
483
		$result["counts"]=count($result["content"]);
484
 
485
		#回傳陣列的結果
486
		return $result;
487
 
488
		}#function createIntArray end
489
 
490
	/*
491
	#函式說明:
492
	#建立含有前置與後置字串的號碼連續陣列.
493
	#回傳的結果:
494
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
495
	#$result["function"],當前執行的函數名稱.
496
	#$result["error"],錯誤訊息陣列.
497
	#$result["counts"]#爲整數陣列裏面有幾個元素。
498
	#$result["content"]#爲整數陣列元素的內容。
499
	#必填參數:
500
	#$conf["end"],字串,爲整數陣列的結束點.
501
	$conf["end"]="";#爲整數陣列的結束點.
502
	#可省略參數:
503
	#$conf["stringHead"],字串,陣列內元素內容的前置字串,預設為 "q-".
504
	#$conf["stringHead"]="q-";
505
	#$conf["stringTail"],字串,陣列內元素內容的後置字串,預設為 ".".
506
	#$conf["stringTail"]=".";
507
	#$conf["start"],字串/整數,爲整數陣列的起始點,預設爲從"1"開始.
508
	#$conf["start"]="1";
509
	#參考資料:
510
	#無.
511
	#備註:
512
	#無.
513
	*/
514
	public static function createCustomIntArray(&$conf){
515
 
516
		#初始化要回傳的變數
517
		$result=array();
518
 
519
		#取得當前執行的函數名稱
520
		$result["function"]=__FUNCTION__;
521
 
522
		#如果 $conf 不為陣列
523
		if(gettype($conf)!="array"){
524
 
525
			#設置執行失敗
526
			$result["status"]="false";
527
 
528
			#設置執行錯誤訊息
529
			$result["error"][]="\$conf變數須為陣列形態";
530
 
531
			#如果傳入的參數為 null
532
			if($conf==null){
533
 
534
				#設置執行錯誤訊息
535
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
536
 
537
				}#if end
538
 
539
			#回傳結果
540
			return $result;
541
 
542
			}#if end
543
 
544
		#如果 $conf["end"] 參數未設置
545
		if(!isset($conf["end"])){
546
 
547
			#設置執行失敗
548
			$result["status"]="false";
549
 
550
			#設置錯誤訊息
551
			$result["error"]="\$conf[\"end\"]未設置!";
552
 
553
			#回傳結果
554
			return $result;
555
 
556
			}#if end
557
 
558
		#如果 $conf["stringHead"] 參數未設置
559
		if(!isset($conf["stringHead"])){
560
 
561
			#則預設設爲"q-"
562
			$conf["stringHead"]="q-";
563
 
564
			}#if end
565
 
566
		#如果 ($conf["stringTail"] 參數未設置
567
		if(!isset($conf["stringTail"])){
568
 
569
			#則預設為"."
570
			$conf["stringTail"]=".";
571
 
572
			}#if end
573
 
574
		#如果 $conf["start"] 參數未設置
575
		if(!isset($conf["start"])){
576
 
577
			#則預設設爲"1"
578
			$conf["start"]="1";
579
 
580
			}#if end
581
 
582
		#執行 $conf["end"]-$conf["start"]+1 次
583
		for($i=$conf["start"];$i<=$conf["end"];$i++){
584
 
585
			#指派陣列元素
586
			$result["content"][]=$conf["stringHead"].$i.$conf["stringTail"];
587
 
588
			}#if end
589
 
590
		#取得陣列元素的數量
591
		$result["counts"]=count($result["content"]);
592
 
593
		#執行到這邊代表執行正常
594
		$result["status"]="true";
595
 
596
		#回傳結果
597
		return $result;
598
 
599
		}#end function
600
 
601
	/*
602
	#函式說明:
603
	#比對兩個陣列變數,如果其中一個陣列變數的元素不存在,則將之消去,然後進行替補。另一個陣列變數則也要做同步的動作。
604
	#回傳的結果:
605
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
606
	#$result["error"],錯誤訊息.
607
	#$result["function"],當前執行的函數名稱.
608
	#$result["newArraysA"],經過整理與同步的陣列變數A.
609
	#$result["newArraysB"],經過整理與同步的陣列變數B.
610
	#必填參數:
611
	#$conf["arraysA"],陣列,用來跟陣列變數B比較的陣列變數A.
612
	$conf["arraysA"]=array();
613
	#$conf["arraysB"],陣列,用來跟陣列變數A比較的陣列變數B.
614
	$conf["arraysB"]=array();
615
	#可省略參數:
616
	#無.
617
	#參考資料:
618
	#無.
619
	#備註:
620
	#無.
621
	*/
622
	public static function compareAndModifyTwoArrays(&$conf){
623
 
624
		#初始化要回傳的變數
625
		$result=array();
626
 
627
		#取得當前執行的函數名稱
628
		$result["function"]=__FUNCTION__;
629
 
630
		#如果 $conf 不為陣列
631
		if(gettype($conf)!="array"){
632
 
633
			#設置執行失敗
634
			$result["status"]="false";
635
 
636
			#設置執行錯誤訊息
637
			$result["error"][]="\$conf變數須為陣列形態";
638
 
639
			#如果傳入的參數為 null
640
			if($conf==null){
641
 
642
				#設置執行錯誤訊息
643
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
644
 
645
				}#if end
646
 
647
			#回傳結果
648
			return $result;
649
 
650
			}#if end
651
 
652
		#將陣列A放規則的陣列裏面
653
		#函式說明:
654
		#將陣列的key重新排序,然後回傳,以便後續存取。
655
		#回傳的解果:
656
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
657
		#$result["error"],執行錯誤的訊息.
658
		#$result["function"],當前執行的函數名稱.
659
		#$result["dataContent"],儲存陣列元素的內容.
660
		#必填參數:
661
		$conf_createV2["arrayContent"]=$conf["arraysA"];#陣列變數
662
		$newArraysA=arrays::createV2($conf_createV2);
663
		unset($conf_createV2);
664
 
665
		#如果 $newArraysA 執行失敗
666
		if($newArraysA["status"]=="false"){
667
 
668
			#設置執行失敗
669
			$result["status"]="false";
670
 
671
			#設置執行錯誤
672
			$result["error"]=$newArraysA;
673
 
674
			#回傳結果
675
			return $result;
676
 
677
			}#if end
678
 
679
		#將陣列B放規則的陣列裏面
680
		#函式說明:
681
		#將陣列的key重新排序,然後回傳,以便後續存取。
682
		#回傳的解果:
683
		#$result["status"],執行是否成功,"true"代表成功,"false"代表失敗.
684
		#$result["error"],執行錯誤的訊息.
685
		#$result["function"],當前執行的函數名稱.
686
		#$result["dataContent"],儲存陣列元素的內容.
687
		#必填參數:
688
		$conf_createV2["arrayContent"]=$conf["arraysB"];#陣列變數
689
		$newArraysB=arrays::createV2($conf_createV2);
690
		unset($conf_createV2);
691
 
692
		#如果 $newArraysB 執行失敗
693
		if($newArraysB["status"]=="false"){
694
 
695
			#設置執行失敗
696
			$result["status"]="false";
697
 
698
			#設置執行錯誤
699
			$result["error"]=$newArraysB;
700
 
701
			#回傳結果
702
			return $result;
703
 
704
			}#if end
705
 
706
		#將新的陣列A與B當中屬於null的對稱位置踢除,然後進行替補。
707
		for($i=0;$i<count($newArraysA["dataContent"]);$i++){
708
 
709
			#如果對稱的變數內容存在
710
			if( isset($newArraysA["dataContent"][$i]) && isset($newArraysB["dataContent"][$i]) ){
711
 
712
				#將對稱的變數放進新的陣列裏面
713
				$result["newArraysA"][]=$newArraysA["dataContent"][$i];
714
				$result["newArraysB"][]=$newArraysB["dataContent"][$i];
715
 
716
				}#if end
717
 
718
			}#for end
719
 
720
		#執行到這邊代表執行正常
721
		$result["status"]="true";
722
 
723
		#回傳結果
724
		return $result;
725
 
726
		}# funciton compareAndModify2Arrays end
727
 
728
	/*
729
	#函式說明:
730
	#將陣列A中存在於陣列B中的元素移除,並重新按照順序排序.
731
	#回傳的結果:
732
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
733
	#$result["error"],錯誤訊息.
734
	#$result["function"],當前執行的函數.
735
	#$result["argu"],使用的參數.
736
	#$result["empty"],移除完元素後是否為空陣列,"true"為是,"false"為否.
737
	#$result["content"]["byName"],剔除掉特定元素的陣列,使用原來陣列的key來儲存.
738
	#$result["content"]["byNumber"],剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
739
	#必填參數:
740
	#$conf["arrayA"],陣列,要處理的原始數字陣列.
741
	$conf["arrayA"]=array();
742
	#$conf["arrayB"],陣列,如果arrayA裡面的元素數值有出現在此陣列,則要從A陣列與B陣列中移除.
743
	$conf["arrayB"]=array();
744
	#可省略參數:
745
	#無.
746
	#參考資料:
747
	#無.
748
	#備註:
749
	#用array_diff()可快速得到結果
750
	*/
751
	public static function eraseRepeatedElement(&$conf){
752
 
753
		#初始化要回傳的變數
754
		$result=array();
755
 
756
		#取得當前執行的函數名稱
757
		$result["function"]=__FUNCTION__;
758
 
759
		#如果 $conf 不為陣列
760
		if(gettype($conf)!="array"){
761
 
762
			#設置執行失敗
763
			$result["status"]="false";
764
 
765
			#設置執行錯誤訊息
766
			$result["error"][]="\$conf變數須為陣列形態";
767
 
768
			#如果傳入的參數為 null
769
			if($conf==null){
770
 
771
				#設置執行錯誤訊息
772
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
773
 
774
				}#if end
775
 
776
			#回傳結果
777
			return $result;
778
 
779
			}#if end
780
 
781
		#取得參數
782
		$result["argu"]=$conf;
783
 
784
		#檢查參數
785
		#函式說明:
786
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
787
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
788
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
789
		#$result["function"],當前執行的函式名稱.
790
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
791
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
792
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
793
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
794
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
795
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
796
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
797
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
798
		#必填寫的參數:
799
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
800
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
801
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
802
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("arrayA","arrayB");
803
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
804
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
805
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
806
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
807
		#可以省略的參數:
808
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
809
		#$conf["canBeEmptyString"]="false";
810
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
811
		#$conf["canNotBeEmpty"]=array();
812
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
813
		#$conf["canBeEmpty"]=array();
814
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
815
		#$conf["skipableVariableCanNotBeEmpty"]=array();
816
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
817
		#$conf["skipableVariableName"]=array();
818
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
819
		#$conf["skipableVariableType"]=array();
820
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
821
		#$conf["skipableVarDefaultValue"]=array("");
822
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
823
		#$conf["arrayCountEqualCheck"][]=array();
824
		#參考資料來源:
825
		#array_keys=>http://php.net/manual/en/function.array-keys.php
826
		#建議:
827
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
828
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
829
		unset($conf["variableCheck::checkArguments"]);
830
 
831
		#如果檢查參數失敗
832
		if($checkArguments["status"]==="false"){
833
 
834
			#設置執行失敗
835
			$result["status"]="false";
836
 
837
			#設置執行錯誤訊息
838
			$result["error"]=$checkArguments;
839
 
840
			#回傳結果
841
			return $result;
842
 
843
			}#if end
844
 
845
		#如果參數檢查不過
846
		if($checkArguments["passed"]==="false"){
847
 
848
			#設置執行失敗
849
			$result["status"]="false";
850
 
851
			#設置執行錯誤訊息
852
			$result["error"]=$checkArguments;
853
 
854
			#回傳結果
855
			return $result;
856
 
857
			}#if end
858
 
859
		#剔除掉特定元素的陣列,使用原來陣列的key來儲存.
860
		$result["content"]["byName"]=array();
861
 
862
		#剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
863
		$result["content"]["byNumber"]=array();
864
 
865
		#如果arrayB沒有內容
866
		if(count($conf["arrayB"])===0){
867
 
868
			#直接將arrayA的內容放進去
869
			$result["content"]["byName"]=$conf["arrayA"];
870
 
871
			#針對每隔陣列a
872
			foreach($conf["arrayA"] as $val){
873
 
874
				$result["content"]["byNumber"][]=$val;
875
 
876
				}
877
 
878
			}#if end
879
 
880
		else{
881
			#針對 $conf["arrayA"] 的每個元素
882
			foreach($conf["arrayA"] as $aAk => $aAv){
883
 
884
				#針對 $conf["arrayB"] 的每個元素
885
				foreach($conf["arrayB"] as $aBk => $aBv){
886
 
887
					/*
888
					#debug
889
					echo "\$aAV:".$aAv.PHP_EOL;
890
					echo "\$aBV:".$aBv.PHP_EOL;
891
					echo "(\$aAv===\$aBv):".($aAv===$aBv).PHP_EOL;
892
					*/
893
 
894
					#如果arrayA的元素數值存在於陣列arrayB
895
					if($aAv===$aBv){
896
 
897
						/*
898
						#debug
899
						echo "(\$aAv===\$aBv):".($aAv===$aBv).PHP_EOL;
900
						*/
901
 
902
						#移除重複的元素
903
						#unset($conf["arrayA"][$aAk]);
904
						#unset($conf["arrayB"][$aBk]);
905
 
906
						/*
907
						#debug
908
						echo $aAv." repeated, ignore it.".PHP_EOL;
909
						*/
910
 
911
						#跳過
912
						continue 2;
913
 
914
						}#if end
915
 
916
					/*
917
					#debug
918
					echo "(\$aAv!==\$aBv):".($aAv!==$aBv).PHP_EOL;
919
					echo "add ".$aAv." ".PHP_EOL;
920
					*/
921
 
922
					#如果還沒比較到最後一個
923
					#參考資料:
924
					#array_key_last => https://stackoverflow.com/questions/1070244/how-to-determine-the-first-and-last-iteration-in-a-foreach-loop
925
					if($conf["arrayB"][$aBk]!==$conf["arrayB"][array_key_last($conf["arrayB"])]){
926
 
927
						/*
928
						#debug
929
						echo "not last, continue...".PHP_EOL;
930
						*/
931
 
932
						#繼續比
933
						continue;
934
 
935
						}#if end					
936
 
937
					#以key取得未重複的元素
938
					$result["content"]["byName"][$aAk]=$aAv;	
939
 
940
					#如果IP未重複
941
					if(!in_array($aAv,$result["content"]["byNumber"])){
942
 
943
						#重新排列未重複的元素
944
						$result["content"]["byNumber"][]=$aAv;
945
 
946
						}#if end
947
 
948
					}#foreach end
949
 
950
				}#foreach end
951
 
952
			}#else end
953
 
954
		#設置有剩下未重複的元素
955
		$result["empty"]="false";	
956
 
957
		#如果沒有剩下未重複的元素
958
		if($result["content"]["byName"]===array()){
959
 
960
			#設置沒有剩下未重複的元素
961
			$result["empty"]="true";
962
 
963
			}#if end
964
 
965
		#設置執行正常
966
		$result["status"]="true";
967
 
968
		#回傳結果
969
		return $result;
970
 
971
		}#function eraseRepeatedElement end
972
 
973
	/*
974
	#函式說明:
975
	#將陣列中特定元素剔除,並重新按照順序排序
976
	#回傳的結果:
977
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
978
	#$result["error"],錯誤訊息
979
	#$result["function"],當前執行的函數
980
	#$result["empty"],移除完元素後是否為空陣列,"true"為是,"false"為否.
981
	#$result["content"]["byName"],剔除掉特定元素的陣列,使用原來陣列的key來儲存.
982
	#$result["content"]["byNumber"],剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
983
	#必填參數:
984
	#$conf["rawInputArray"],陣列,要處理的原始數字陣列.
985
	$conf["rawInputArray"]=array();
986
	#$conf["eraseElementKey"],陣列,要移除的元素key值.
987
	$conf["eraseElementKey"]=array();
988
	#可省略參數:
989
	#無.
990
	#參考資料:
991
	#無.
992
	#備註:
993
	#無.
994
	*/
995
	public static function eraseElement(&$conf){
996
 
997
		#初始化要回傳的結果
998
		$result=array();
999
 
1000
		#取得當前執行的函數名稱
1001
		$result["function"]=__FUNCTION__;
1002
 
1003
		#初始化要回傳的陣列
1004
		$result["content"]=array();
1005
 
1006
		#如果 $conf 不為陣列
1007
		if(gettype($conf)!="array"){
1008
 
1009
			#設置執行失敗
1010
			$result["status"]="false";
1011
 
1012
			#設置執行錯誤訊息
1013
			$result["error"][]="\$conf變數須為陣列形態";
1014
 
1015
			#如果傳入的參數為 null
1016
			if($conf==null){
1017
 
1018
				#設置執行錯誤訊息
1019
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1020
 
1021
				}#if end
1022
 
1023
			#回傳結果
1024
			return $result;
1025
 
1026
			}#if end
1027
 
1028
		#檢查參數
1029
		#函式說明:
1030
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1031
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1032
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1033
		#$result["function"],當前執行的函式名稱.
1034
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1035
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1036
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1037
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
1038
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
1039
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1040
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
1041
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
1042
		#必填寫的參數:
1043
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1044
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1045
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1046
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawInputArray","eraseElementKey");
1047
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
1048
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","string");
1049
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1050
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1051
		#可以省略的參數:
1052
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
1053
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1054
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
1055
		#$conf["skipableVariableCanNotBeEmpty"]=array();
1056
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1057
		#$conf["skipableVariableName"]=array();
1058
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1059
		#$conf["skipableVariableType"]=array();
1060
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1061
		#$conf["skipableVarDefaultValue"]=array("");
1062
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1063
		#$conf["arrayCountEqualCheck"][]=array();
1064
		#參考資料來源:
1065
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1066
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1067
		unset($conf["variableCheck::checkArguments"]);
1068
 
1069
		#如果檢查參數失敗
1070
		if($checkArguments["status"]=="false"){
1071
 
1072
			#設置執行不正常
1073
			$result["status"]="false";
1074
 
1075
			#設置錯誤訊息
1076
			$result["error"]=$checkArguments;
1077
 
1078
			#回傳結果
1079
			return $result;
1080
 
1081
			}#if end
1082
 
1083
		#如果沒有通過參數檢查
1084
		if($checkArguments["passed"]=="false"){
1085
 
1086
			#設置執行不正常
1087
			$result["status"]="false";
1088
 
1089
			#設置錯誤訊息
1090
			$result["error"]=$checkArguments;
1091
 
1092
			#回傳結果
1093
			return $result;
1094
 
1095
			}#if end
1096
 
1097
		#計數的變數
1098
		$times=0;
1099
 
1100
		#整理陣列
1101
		foreach($conf["rawInputArray"] as $key => $value){
1102
 
1103
			#如果不是要剔除的元素則放進新的陣列裏面
1104
			if($key!=$conf["eraseElementKey"]){
1105
 
1106
				/*
1107
 
1108
				#用數字0開始來儲存要取的元素內容
1109
				$result["content"]["byName"][$times]=$value;
1110
 
1111
				#用元素自己的名字來儲存要取的元素內容
1112
				$result["content"]["byNumber"][$key]=$value;
1113
 
1114
				*/
1115
 
1116
				#用數字0開始來儲存要取的元素內容
1117
				$result["content"]["byNumber"][$times]=$value;
1118
 
1119
				#用元素自己的名字來儲存要取的元素內容
1120
				$result["content"]["byName"][$key]=$value;
1121
 
1122
				#記數加一
1123
				$times++;
1124
 
1125
				}#if end
1126
 
1127
			}#foreach end
1128
 
1129
		#如果 $result["content"]["byName"] 不存在
1130
		if(!isset($result["content"]["byName"])){
1131
 
1132
			#設為"true",移除元素後為空陣列.
1133
			$result["empty"]="true";
1134
 
1135
			#設置要回傳的空陣列
1136
			$result["content"]["byNumber"]=array();
1137
			$result["content"]["byName"]=array();
1138
 
1139
			}#if end
1140
 
1141
		#反之
1142
		else{
1143
 
1144
			#設為"false",移除元素後不為空陣列.
1145
			$result["empty"]="false";
1146
 
1147
			}#else end
1148
 
1149
		#設置執行正常
1150
		$result["status"]="true";
1151
 
1152
		#回傳結果
1153
		return $result;
1154
 
1155
		}#function eraseElement end
1156
 
1157
	/*
1158
	#函式說明:
1159
	#將陣列轉換成存有key與value的陣列
1160
	#回傳的結果:
1161
	#$result["status"],執行式否正常的識別,"true"代表執行正常,"false"代表執行不正常.
1162
	#$result["function"],當前執行的函數
1163
	#$result["error"],錯誤訊息.
1164
	#$result[$i]["key"],原先$i+1個元素的key.
1165
	#$result[$i]["value"],原先$i+1個元素的value.
1166
	#必填參數:
1167
	#$conf["rawInputArray"],陣列,要轉換的陣列變數.
1168
	$conf["rawInputArray"]=array();
1169
	#可省略參數:
1170
	#無.
1171
	#參考資料:
1172
	#無.
1173
	#備註:
1174
	#無.
1175
	*/
1176
	public static function getKeyAndValue(&$conf){
1177
 
1178
		#初始化要回傳的變數
1179
		$result=array();
1180
 
1181
		#取得當前執行的函數
1182
		$result["function"]=__FUNCTION__;
1183
 
1184
		#如果 $conf 不為陣列
1185
		if(gettype($conf)!="array"){
1186
 
1187
			#設置執行失敗
1188
			$result["status"]="false";
1189
 
1190
			#設置執行錯誤訊息
1191
			$result["error"][]="\$conf變數須為陣列形態";
1192
 
1193
			#如果傳入的參數為 null
1194
			if($conf==null){
1195
 
1196
				#設置執行錯誤訊息
1197
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1198
 
1199
				}#if end
1200
 
1201
			#回傳結果
1202
			return $result;
1203
 
1204
			}#if end
1205
 
1206
		#如果 $conf["rawInputArray"] 沒有設置
1207
		if(!isset($conf["rawInputArray"])){
1208
 
1209
			#設置執行失敗
1210
			$result["status"]="false";
1211
 
1212
			#設置錯誤訊息
1213
			$result["error"]="\$conf[\"rawInputArray\"]沒有設置!";
1214
 
1215
			#回傳結果
1216
			return $result;
1217
 
1218
			}#if end
1219
 
1220
		#初始化計數
1221
		$count=1;
1222
 
1223
		#取得每個元素的key值
1224
		foreach($conf["rawInputArray"] as $key=>$value){
1225
 
1226
			#另存 key
1227
			$result[$count]["key"]=$key;
1228
 
1229
			#另存 value
1230
			$result[$count]["value"]=$value;
1231
 
1232
			#$count加1
1233
			$count=$count+1;
1234
 
1235
			}#foreach end
1236
 
1237
		#執行到這邊代表,執行正常
1238
		$result["status"]="true";
1239
 
1240
		#回傳結果
1241
		return $result;
1242
 
1243
		}#function getKeyAndValue end
1244
 
1245
	/*
1246
	#函式說明:
1247
	#將一個數值放進陣列指定的key裡面
1248
	#回傳結果:
1249
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1250
	#$result["error"],錯誤訊息陣列.
1251
	#$result["function"],當前執行的函數名稱.
1252
	#$result["content"],加入指定元素後的陣列.
1253
	#必填參數:
1254
	#$conf["value"],字串,要放入的數值.
1255
	$conf["value"]="";
1256
	#$conf["keyArray"],陣列,陣列的key,若為array("a","b","c"),則會建立$result["content"]["a"]["b"]["c"]陣列變數,其數值為$conf["value"].
1257
	$conf["keyArray"]=array();
1258
	#可省略參數:
1259
	#無.
1260
	#參考資料:
1261
	#無.
1262
	#備註:
1263
	#無.
1264
	*/
1265
	public static function assignVarToArray(&$conf){
1266
 
1267
		#初始化要回傳的變數
1268
		$result=array();
1269
 
1270
		#初始化當前執行的函數名稱
1271
		$result["funciton"]=__FUNCTION__;
1272
 
1273
		#如果 $conf 不為陣列
1274
		if(gettype($conf)!="array"){
1275
 
1276
			#設置執行失敗
1277
			$result["status"]="false";
1278
 
1279
			#設置執行錯誤訊息
1280
			$result["error"][]="\$conf變數須為陣列形態";
1281
 
1282
			#如果傳入的參數為 null
1283
			if($conf==null){
1284
 
1285
				#設置執行錯誤訊息
1286
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1287
 
1288
				}#if end
1289
 
1290
			#回傳結果
1291
			return $result;
1292
 
1293
			}#if end
1294
 
1295
		#檢查參數設定是否正確
1296
		#函式說明:
1297
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1298
		#回傳的結果:
1299
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1300
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1301
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1302
		#必填寫的參數:
1303
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
1304
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("value","keyArray");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1305
		#可以省略的參數:
1306
		#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
1307
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1308
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
1309
		unset($conf["variableCheck"]["isexistMuti"]);
1310
 
1311
		#如果檢驗失敗
1312
		if($checkResult["status"]=="false"){
1313
 
1314
			#設置執行不正常
1315
			$result["status"]="false";
1316
 
1317
			#設置執行錯誤訊息
1318
			$result["error"]=$checkResult;
1319
 
1320
			#回傳錯誤訊息
1321
			return $result;
1322
 
1323
			}#if end
1324
 
1325
		#如果檢驗沒有通過
1326
		if($checkResult["passed"]=="false"){
1327
 
1328
			#設置執行不正常
1329
			$result["status"]="false";
1330
 
1331
			#設置執行錯誤訊息
1332
			$result["error"]=$checkResult;
1333
 
1334
			#回傳錯誤訊息
1335
			return $result;
1336
 
1337
			}#if end
1338
 
1339
		#用於累加路徑層級的變數初始值
1340
		$addedLayerVar=array();
1341
 
1342
		#針對每個key
1343
		for($i=count($conf["keyArray"])-1;$i>=0;$i--){
1344
 
1345
			#如果最底層的key
1346
			if($i==count($conf["keyArray"])-1){
1347
 
1348
				#取得值
1349
				$addedLayerVar[$conf["keyArray"][$i]]=$conf["value"];
1350
 
1351
				}#if end
1352
 
1353
			#反之不是最底層的key
1354
			else{
1355
 
1356
				#增加key的路徑
1357
				$addedLayerVar[$conf["keyArray"][$i]]=$addedLayerVar;
1358
 
1359
				#移除舊有的路徑
1360
				unset($addedLayerVar[$conf["keyArray"][$i+1]]);
1361
 
1362
				}#else end
1363
 
1364
			}#for end
1365
 
1366
		#取得要回傳的陣列
1367
		$result["content"]=$addedLayerVar;
1368
 
1369
		#執行到這邊代表執行正常
1370
		$result["status"]="true";
1371
 
1372
		#回傳結果
1373
		return $result;
1374
 
1375
		}#funciton assignVarToArray end
1376
 
1377
	/*
1378
	#函式說明:
1379
	#將含有特定符號的一行字串轉換為陣列
1380
	#回傳的結果:
1381
	#$result["status"],執行式否正常的識別,"true"代表執行正常,"false"代表執行不正常.
1382
	#$result["function"],當前執行的函數
1383
	#$result["error"],錯誤訊息.
1384
	#$result["content"],分割好的字串陣列.
1385
	#必填參數:
1386
	#conf["inputString"],字串,要轉換為陣列的字串
1387
	$conf["inputString"]="";#要轉換為陣列的字串
1388
	#可省略參數:
1389
	#$conf["spiltSymbol"],字串,用來分割 $conf["inputString"] 的字串,預設為",".
1390
	#$conf["spiltSymbol"]=",";
1391
	#參考資料:
1392
	#無.
1393
	#備註:
1394
	#無.
1395
	*/
1396
	public static function getArrayFromString(&$conf){
1397
 
1398
		#初始化要回傳的變數
1399
		$result=array();
1400
 
1401
		#取得當前執行的函數
1402
		$result["function"]=__FUNCTION__;
1403
 
1404
		#如果 $conf 不為陣列
1405
		if(gettype($conf)!="array"){
1406
 
1407
			#設置執行失敗
1408
			$result["status"]="false";
1409
 
1410
			#設置執行錯誤訊息
1411
			$result["error"][]="\$conf變數須為陣列形態";
1412
 
1413
			#如果傳入的參數為 null
1414
			if($conf==null){
1415
 
1416
				#設置執行錯誤訊息
1417
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1418
 
1419
				}#if end
1420
 
1421
			#回傳結果
1422
			return $result;
1423
 
1424
			}#if end
1425
 
1426
		#函式說明:
1427
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1428
		#回傳的結果:
1429
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1430
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1431
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1432
		#必填寫的參數:
1433
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
1434
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("inputString");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1435
		#可以省略的參數:
1436
		#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
1437
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1438
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
1439
		unset($conf["variableCheck"]["isexistMuti"]);
1440
 
1441
		#如果參數檢查失敗
1442
		if($checkResult["status"]=="false"){
1443
 
1444
			#設置執行失敗
1445
			$result["status"]="false";
1446
 
1447
			#設置執行錯誤
1448
			$result["error"]=$checkResult;
1449
 
1450
			#回傳結果
1451
			return $result;
1452
 
1453
			}#if end
1454
 
1455
		#如果參數檢查不通過
1456
		if($checkResult["passed"]=="false"){
1457
 
1458
			#設置執行失敗
1459
			$result["status"]="false";
1460
 
1461
			#設置執行錯誤
1462
			$result["error"]=$checkResult;
1463
 
1464
			#回傳結果
1465
			return $result;
1466
 
1467
			}#if end
1468
 
1469
		#如果 $conf["spiltSymbol"] 沒有設置
1470
		if(!isset($conf["spiltSymbol"])){
1471
 
1472
			#預設為","
1473
			$conf["spiltSymbol"]=",";
1474
 
1475
			}#if end
1476
 
1477
		#函式說明:
1478
		#將固定格式的字串分開,並回傳分開的結果。
1479
		#回傳的參數:
1480
		#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
1481
		#$result["dataCounts"],爲總共分成幾段
1482
		#必填參數:
1483
		$conf["stringProcess"]["spiltString"]["stringIn"]=$conf["inputString"];#要處理的字串。
1484
 
1485
		#如果 $conf["spiltSymbol"] 有設置
1486
		if(isset($conf["spiltSymbol"])){
1487
 
1488
			#設置分割用的字串
1489
			$conf["stringProcess"]["spiltString"]["spiltSymbol"]=$conf["spiltSymbol"];
1490
 
1491
			}#if end
1492
 
1493
		$spiledString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
1494
		unset($conf["stringProcess"]["spiltString"]);
1495
 
1496
		#如果分割字串失敗
1497
		if($spiledString["status"]=="false"){
1498
 
1499
			#設置執行失敗
1500
			$result["status"]="false";
1501
 
1502
			#設置執行錯誤
1503
			$result["error"]=$spiledString;
1504
 
1505
			#回傳結果
1506
			return $result;
1507
 
1508
			}#if end
1509
 
1510
		#如果有最後一個選項
1511
		if(isset($result["dataArray"][count($spiledString["dataArray"])-1])){
1512
 
1513
			#如果最後一個選項為空
1514
			if($result["dataArray"][count($spiledString["dataArray"])-1]==""){
1515
 
1516
				#卸除該元素
1517
				unset($result["dataArray"][count($spiledString["dataArray"])-1]);
1518
 
1519
				}#if end
1520
 
1521
			}#if end
1522
 
1523
		#取得陣列
1524
		$result["content"]=$spiledString["dataArray"];
1525
 
1526
		#執行正常的識別
1527
		$result["status"]="true";
1528
 
1529
		#回傳結果
1530
		return $result;
1531
 
1532
		}#function getArrayFromString end
1533
 
1534
	/*
1535
	#函式說明:
1536
	#將多個一維陣列串聯起來,key從0開始排序.
1537
	#回傳的結果:
1538
	#$result["status"],"true"表執行正常,"false"代表執行不正常.
1539
	#$result["error"],錯誤訊息陣列.
1540
	#$result["function"],當前執行的函數.
1541
	#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1542
	#$result["content"],合併好的一維陣列.
1543
	#必填參數
1544
	#$conf["inputArray"],陣列,要合併的一維陣列變數,例如:=array($array1,$array2);
1545
	$conf["inputArray"]=array();
1546
	#可省略參數:
1547
	#$conf["allowRepeat"],字串,預設為"true",允許重複的結果;若為"false"則不會出現重複的元素內容.
1548
	#$conf["allowRepeat"]="true";
1549
	#$conf["looseDiff"],字串,預設為"false",代表要嚴謹判斷為有相異,例如陣列中元素的key順序不同(整數)就代表有相異;反之為"true",例如陣列中元素的key順序不同(非整數),但value有相同,則視為無相異.
1550
	#$conf["looseDiff"]="false";
1551
	#參考資料:
1552
	#無.
1553
	#備註:
1554
	#無.
1555
	*/
1556
	public static function mergeArray(&$conf){
1557
 
1558
		#初始化要回傳的結果
1559
		$result=array();
1560
 
1561
		#初始話要回傳的陣列
1562
		$result["content"]=array();
1563
 
1564
		#取得當前執行的涵式
1565
		$result["function"]=__FUNCTION__;
1566
 
1567
		#如果 $conf 不為陣列
1568
		if(gettype($conf)!="array"){
1569
 
1570
			#設置執行失敗
1571
			$result["status"]="false";
1572
 
1573
			#設置執行錯誤訊息
1574
			$result["error"][]="\$conf變數須為陣列形態";
1575
 
1576
			#如果傳入的參數為 null
1577
			if($conf==null){
1578
 
1579
				#設置執行錯誤訊息
1580
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1581
 
1582
				}#if end
1583
 
1584
			#回傳結果
1585
			return $result;
1586
 
1587
			}#if end
1588
 
1589
		#取得參數
1590
		$result["argu"]=$conf;
1591
 
1592
		#檢查參數
1593
		#函式說明:
1594
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1595
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1596
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1597
		#$result["function"],當前執行的函式名稱.
1598
		#$result["argu"],設置給予的參數.
1599
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1600
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1601
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1602
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
1603
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
1604
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1605
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
1606
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
1607
		#必填寫的參數:
1608
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1609
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1610
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1611
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1612
		#可以省略的參數:
1613
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1614
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
1615
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
1616
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
1617
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
1618
		#$conf["canBeEmptyString"]="false";
1619
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
1620
		#$conf["canNotBeEmpty"]=array();
1621
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
1622
		#$conf["canBeEmpty"]=array();
1623
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
1624
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("logPath");
1625
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1626
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("allowRepeat","looseDiff");
1627
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1628
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
1629
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1630
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true","false");
1631
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
1632
		#$conf["disallowAllSkipableVarIsEmpty"]="";
1633
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
1634
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
1635
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1636
		#$conf["arrayCountEqualCheck"][]=array();
1637
		#參考資料來源:
1638
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1639
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1640
		unset($conf["variableCheck::checkArguments"]);
1641
 
1642
		#如果檢查參數失敗
1643
		if($checkArguments["status"]==="false"){
1644
 
1645
			#設置執行失敗
1646
			$result["status"]="false";
1647
 
1648
			#設置錯誤訊息
1649
			$result["error"]=$checkArguments;
1650
 
1651
			#回傳結果
1652
			return $result;
1653
 
1654
			}#if end
1655
 
1656
		#如果檢查參數失敗
1657
		if($checkArguments["passed"]==="false"){
1658
 
1659
			#設置執行失敗
1660
			$result["status"]="false";
1661
 
1662
			#設置錯誤訊息
1663
			$result["error"]=$checkArguments;
1664
 
1665
			#回傳結果
1666
			return $result;
1667
 
1668
			}#if end
1669
 
1670
		#針對要合併的每組一維陣列
1671
		foreach($conf["inputArray"] as $array){
1672
 
1673
			#針對該陣列中的每個元素
1674
			foreach($array as $arrayAdded){
1675
 
1676
				#如果不允許重複的內容
1677
				if($conf["allowRepeat"]==="false"){
1678
 
1679
					#如果要寬鬆的視為相異
1680
					if($conf["looseDiff"]==="true"){
1681
 
1682
						#如果有重複了
1683
						if(in_array($arrayAdded,$result["content"])){
1684
 
1685
							#跳到下一個
1686
							continue;
1687
 
1688
							}#if end
1689
 
1690
						}#if end
1691
 
1692
					#反之,代表不能寬鬆的認為相異
1693
					else{
1694
 
1695
						#針對每個既有的元素
1696
						foreach($result["content"] as $key=>$val){
1697
 
1698
							#取得元素的參考
1699
							$valExist=&$val;
1700
 
1701
							#取得要檢查是否重複的元素
1702
							$valAdded=&$arrayAdded;
1703
 
1704
							#如果既有元素跟要檢查是否重複的元素均是陣列
1705
							if( (gettype($valExist)==="array") && (gettype($valAdded)==="array") ){
1706
 
1707
								#預設不知道是否有差異
1708
								$varExistAndValAddedIsDiff="?";
1709
 
1710
								#針對每個已存在元素
1711
								foreach($valExist as $veKey => $veVal){
1712
 
1713
									#若存在 key 相同的地方
1714
									if(isset($valAdded[$veKey])){
1715
 
1716
										#如果 $veVal 跟 $valAdded[$veKey] 兩者都是陣列
1717
										if( gettype($veVal)==="array" && gettype($valAdded[$veKey])==="array" ){
1718
 
1719
											#用來判斷是否 陣列 $veVal 跟 $valAdded[$veKey] 有相異的元素數量
1720
											$sameCount=count($veVal);
1721
 
1722
											#如果 陣列 $valAdded 的元素數量比較多
1723
											if($sameCount<count($valAdded[$veKey])){
1724
 
1725
												#更新 用來判斷是否 陣列 $veVal 跟 $valAdded[$veKey] 有相異的元素數量
1726
												$sameCount=count($valAdded[$veKey]);
1727
 
1728
												}#if end
1729
 
1730
											#遞回處理
1731
											#函式說明:
1732
											#將多個一維陣列串聯起來,key從0開始排序.
1733
											#回傳的結果:
1734
											#$result["status"],"true"表執行正常,"false"代表執行不正常.
1735
											#$result["error"],錯誤訊息陣列.
1736
											#$result["function"],當前執行的函數.
1737
											#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1738
											#$result["content"],合併好的一維陣列.
1739
											#必填參數
1740
											#$conf["inputArray"],陣列,要合併的一維陣列變數,例如:=array($array1,$array2);
1741
											$conf["arrays::mergeArray"]["inputArray"]=array($veVal,$valAdded[$veKey]);
1742
											#可省略參數:
1743
											#$conf["allowRepeat"],字串,預設為"true",允許重複的結果;若為"false"則不會出現重複的元素內容.
1744
											$conf["arrays::mergeArray"]["allowRepeat"]=$conf["allowRepeat"];
1745
											#$conf["looseDiff"],字串,預設為"false",代表要嚴謹判斷為有相異,例如陣列中元素的key順序不同(整數)就代表有相異;反之為"true",例如陣列中元素的key順序不同(整數),但value有相對應且相同.
1746
											$conf["arrays::mergeArray"]["looseDiff"]=$conf["looseDiff"];
1747
											#參考資料:
1748
											#無.
1749
											#備註:
1750
											#無.
1751
											$mergeArray=arrays::mergeArray($conf["arrays::mergeArray"]);
1752
											unset($conf["arrays::mergeArray"]);
1753
 
1754
											#如果執行失敗
1755
											if($mergeArray["status"]==="false"){
1756
 
1757
												#設置執行失敗
1758
												$result["status"]="false";
1759
 
1760
												#設置錯誤訊息
1761
												$result["error"]=$mergeArray;
1762
 
1763
												#回傳結果
1764
												return $result;
1765
 
1766
												}#if end
1767
 
1768
											#如果 合併好元素數量大於 陣列 $veVal 跟 $valAdded[$veKey] 有相異的元素數量
1769
											if( count($mergeArray["content"]) > $sameCount ){
1770
 
1771
												#代表 $veVal 跟 $valAdded[$veKey] 是有差異的陣列
1772
 
1773
												#設置有相異
1774
												$varExistAndValAddedIsDiff="true";
1775
 
1776
												#跳出 foreach
1777
												break;
1778
 
1779
												}#if end 
1780
 
1781
											}#if end
1782
 
1783
										#反之
1784
										else{
1785
 
1786
											#若 key 相同的地方,其 val 有相異
1787
											if($veVal!==$valAdded[$veKey]){
1788
 
1789
												#設置有相異
1790
												$varExistAndValAddedIsDiff="true";
1791
 
1792
												#跳出 foreach
1793
												break;
1794
 
1795
												}#if end
1796
 
1797
											}#else end
1798
 
1799
										}#if end
1800
 
1801
									#反之沒有  key 相同的地方
1802
									else{
1803
 
1804
										#設置有相異
1805
										$varExistAndValAddedIsDiff="true";
1806
 
1807
										#跳出 foreach
1808
										break;
1809
 
1810
										}#else end
1811
 
1812
									}#foreach end
1813
 
1814
								#如果沒有找到有相異的
1815
								if($varExistAndValAddedIsDiff==="?"){
1816
 
1817
									#設置無相異
1818
									$varExistAndValAddedIsDiff="false";
1819
 
1820
									}#if end
1821
 
1822
								#如果無相異
1823
								if($varExistAndValAddedIsDiff==="false"){
1824
 
1825
									#跳到下一個
1826
									continue 3 ;
1827
 
1828
									}#if end
1829
 
1830
								}#if end
1831
 
1832
							#反之不是都為陣列,
1833
							else{
1834
 
1835
								#若為同形態,且數值相同
1836
								if($valExist===$valAdded){
1837
 
1838
									#跳到下一個
1839
									continue 2;
1840
 
1841
									}#if end
1842
 
1843
								}#else end
1844
 
1845
							}#foreach end
1846
 
1847
						#執行到這邊代表既有的元素與要新增的元素是相異的
1848
 
1849
						#將之合併到 $result 陣列裡面
1850
						$result["content"][]=$arrayAdded;
1851
 
1852
						}#else end
1853
 
1854
					}#if end
1855
 
1856
				#反之
1857
				else{
1858
 
1859
					#將之合併到 $result 陣列裡面
1860
					$result["content"][]=$arrayAdded;
1861
 
1862
					}#else end 
1863
 
1864
				}#foreach end
1865
 
1866
			}#foreach end
1867
 
1868
		#設置執行正常
1869
		$result["status"]="true";
1870
 
1871
		#回傳結果
1872
		return $result;
1873
 
1874
		}#function mergeArray end
1875
 
1876
	/*
1877
	#函式說明:
1878
	#將陣列中重複的元素剔除
1879
	#回傳的結果:
1880
	#$result["status"],"true"表執行正常,"false"代表執行不正常.
1881
	#$result["error"],錯誤訊息陣列.
1882
	#$result["function"],當前執行的函數.
1883
	#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1884
	#$result["content"],合併好的陣列.
1885
	#必填參數
1886
	#$conf["inputArray"],陣列,要合併的陣列變數.
1887
	$conf["inputArray"]=array();
1888
	#可省略參數:
1889
	#無.
1890
	#參考資料:
1891
	#無.
1892
	#備註:
1893
	#無.
1894
	*/
1895
	public static function unique(&$conf){
1896
 
1897
		#初始化要回傳的結果
1898
		$result=array();
1899
 
1900
		#初始話要回傳的陣列
1901
		$result["content"]=array();
1902
 
1903
		#取得當前執行的涵式
1904
		$result["function"]=__FUNCTION__;
1905
 
1906
		#如果 $conf 不為陣列
1907
		if(gettype($conf)!="array"){
1908
 
1909
			#設置執行失敗
1910
			$result["status"]="false";
1911
 
1912
			#設置執行錯誤訊息
1913
			$result["error"][]="\$conf變數須為陣列形態";
1914
 
1915
			#如果傳入的參數為 null
1916
			if($conf==null){
1917
 
1918
				#設置執行錯誤訊息
1919
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1920
 
1921
				}#if end
1922
 
1923
			#回傳結果
1924
			return $result;
1925
 
1926
			}#if end
1927
 
1928
		#取得參數
1929
		$result["argu"]=$conf;
1930
 
1931
		#檢查參數
1932
		#函式說明:
1933
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1934
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1935
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1936
		#$result["function"],當前執行的函式名稱.
1937
		#$result["argu"],設置給予的參數.
1938
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1939
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1940
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1941
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
1942
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
1943
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1944
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
1945
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
1946
		#必填寫的參數:
1947
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1948
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1949
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1950
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1951
		#可以省略的參數:
1952
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1953
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
1954
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
1955
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
1956
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
1957
		#$conf["canBeEmptyString"]="false";
1958
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
1959
		#$conf["canNotBeEmpty"]=array();
1960
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
1961
		#$conf["canBeEmpty"]=array();
1962
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
1963
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("logPath");
1964
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1965
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("allowRepeat","looseDiff");
1966
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1967
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
1968
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1969
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true","false");
1970
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
1971
		#$conf["disallowAllSkipableVarIsEmpty"]="";
1972
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
1973
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
1974
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1975
		#$conf["arrayCountEqualCheck"][]=array();
1976
		#參考資料來源:
1977
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1978
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1979
		unset($conf["variableCheck::checkArguments"]);
1980
 
1981
		#如果檢查參數失敗
1982
		if($checkArguments["status"]==="false"){
1983
 
1984
			#設置執行失敗
1985
			$result["status"]="false";
1986
 
1987
			#設置錯誤訊息
1988
			$result["error"]=$checkArguments;
1989
 
1990
			#回傳結果
1991
			return $result;
1992
 
1993
			}#if end
1994
 
1995
		#如果檢查參數失敗
1996
		if($checkArguments["passed"]==="false"){
1997
 
1998
			#設置執行失敗
1999
			$result["status"]="false";
2000
 
2001
			#設置錯誤訊息
2002
			$result["error"]=$checkArguments;
2003
 
2004
			#回傳結果
2005
			return $result;
2006
 
2007
			}#if end
2008
 
2009
		#初始化給 arrays::mergeArray 用的 inputArray 參數
2010
		$paramsOfInputArrayOfArraysMergeArray=array();
2011
 
2012
		#針對每個元素 
2013
		foreach($conf["inputArray"] as $ele){
2014
 
2015
			#包成陣列並儲存起來
2016
			$paramsOfInputArrayOfArraysMergeArray[]=array($ele);
2017
 
2018
			}#foreach end
2019
 
2020
		#函式說明:
2021
		#將多個一維陣列串聯起來,key從0開始排序.
2022
		#回傳的結果:
2023
		#$result["status"],"true"表執行正常,"false"代表執行不正常.
2024
		#$result["error"],錯誤訊息陣列.
2025
		#$result["function"],當前執行的函數.
2026
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2027
		#$result["content"],合併好的一維陣列.
2028
		#必填參數
2029
		#$conf["inputArray"],陣列,要合併的一維陣列變數,例如:=array($array1,$array2);
2030
		$conf["arrays::mergeArray"]["inputArray"]=$paramsOfInputArrayOfArraysMergeArray;
2031
		#可省略參數:
2032
		#$conf["allowRepeat"],字串,預設為"true",允許重複的結果;若為"false"則不會出現重複的元素內容.
2033
		$conf["arrays::mergeArray"]["allowRepeat"]="false";
2034
		#$conf["looseDiff"],字串,預設為"false",代表要嚴謹判斷為有相異,例如陣列中元素的key順序不同(整數)就代表有相異;反之為"true",例如陣列中元素的key順序不同(非整數),但value有相同,則視為無相異.
2035
		#$conf["arrays::mergeArray"]["looseDiff"]="false";
2036
		#參考資料:
2037
		#無.
2038
		#備註:
2039
		#無.
2040
		$mergeArray=arrays::mergeArray($conf["arrays::mergeArray"]);
2041
		unset($conf["arrays::mergeArray"]);
2042
 
2043
		#debug
2044
		#var_dump(__LINE__,$mergeArray);
2045
 
2046
		#如果執行失敗
2047
		if($mergeArray["status"]==="false"){
2048
 
2049
			#設置執行失敗
2050
			$result["status"]="false";
2051
 
2052
			#設置錯誤訊息
2053
			$result["error"]=$mergeArray;
2054
 
2055
			#回傳結果
2056
			return $result;
2057
 
2058
			}#if end
2059
 
2060
		#設置執行後得到的不重複陣列結果
2061
		$result["content"]=$mergeArray["content"];
2062
 
2063
		#設置執行正常
2064
		$result["status"]="true";
2065
 
2066
		#回傳結果
2067
		return $result;
2068
 
2069
		}#function unique end
2070
 
2071
	/*
2072
	#函式說明:
2073
	#將多個多維陣列串聯起來,key從0開始排序.
2074
	#回傳的結果:
2075
	#$result["status"],"true"表執行正常,"false"代表執行不正常.
2076
	#$result["error"],錯誤訊息陣列.
2077
	#$result["function"],當前執行的函數.
2078
	#$result["argu"],使用的參數.
2079
	#$result["content"],合併好的一維陣列.
2080
	#必填參數
2081
	#$conf["inputArray"],陣列,要合併的一維陣列變數,例如:=array($array1,$array2);
2082
	$conf["inputArray"]=array();
2083
	#可省略參數:
2084
	#$conf["allowRepeat"],字串,預設為"false",不允許重複的結果;反之為"true".
2085
	#$conf["allowRepeat"]="true";
2086
	#$conf["equalKeyStruc"],字串陣列,若 allowRepeat 參數為 "false", 這該參數生效.該參數為用來判斷每個陣列的哪個鍵值路徑底下的數值相同時要進行取代,後者會取代前者.
2087
	#$conf["equalKeyStruc"]=array();
2088
	#參考資料:
2089
	#無.
2090
	#備註:
2091
	#無.
2092
	*/
2093
	public static function mergeMultiDimensionArray(&$conf){
2094
 
2095
		#初始化要回傳的結果
2096
		$result=array();
2097
 
2098
		#初始話要回傳的陣列
2099
		$result["content"]=array();
2100
 
2101
		#取得當前執行的涵式
2102
		$result["function"]=__FUNCTION__;
2103
 
2104
		#如果 $conf 不為陣列
2105
		if(gettype($conf)!="array"){
2106
 
2107
			#設置執行失敗
2108
			$result["status"]="false";
2109
 
2110
			#設置執行錯誤訊息
2111
			$result["error"][]="\$conf變數須為陣列形態";
2112
 
2113
			#如果傳入的參數為 null
2114
			if($conf==null){
2115
 
2116
				#設置執行錯誤訊息
2117
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2118
 
2119
				}#if end
2120
 
2121
			#回傳結果
2122
			return $result;
2123
 
2124
			}#if end
2125
 
2126
		#儲存使用的參數
2127
		$result["argu"]=$conf;
2128
 
2129
		#檢查參數
2130
		#函式說明:
2131
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2132
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2133
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2134
		#$result["function"],當前執行的函式名稱.
2135
		#$result["argu"],設置給予的參數.
2136
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2137
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2138
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2139
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
2140
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
2141
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2142
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
2143
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
2144
		#必填寫的參數:
2145
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2146
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2147
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2148
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2149
		#可以省略的參數:
2150
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2151
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
2152
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
2153
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
2154
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
2155
		#$conf["canBeEmptyString"]="false";
2156
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
2157
		#$conf["canNotBeEmpty"]=array();
2158
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
2159
		#$conf["canBeEmpty"]=array();
2160
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
2161
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("logPath");
2162
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2163
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("allowRepeat","equalKeyStruc");
2164
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2165
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","array");
2166
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2167
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false",null);
2168
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
2169
		#$conf["disallowAllSkipableVarIsEmpty"]="";
2170
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
2171
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
2172
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2173
		#$conf["arrayCountEqualCheck"][]=array();
2174
		#參考資料來源:
2175
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2176
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2177
		unset($conf["variableCheck::checkArguments"]);
2178
 
2179
		#如果檢查參數失敗
2180
		if($checkArguments["status"]==="false"){
2181
 
2182
			#設置執行失敗
2183
			$result["status"]="false";
2184
 
2185
			#設置錯誤訊息
2186
			$result["error"]=$checkArguments;
2187
 
2188
			#回傳結果
2189
			return $result;
2190
 
2191
			}#if end
2192
 
2193
		#如果檢查參數失敗
2194
		if($checkArguments["passed"]==="false"){
2195
 
2196
			#設置執行失敗
2197
			$result["status"]="false";
2198
 
2199
			#設置錯誤訊息
2200
			$result["error"]=$checkArguments;
2201
 
2202
			#回傳結果
2203
			return $result;
2204
 
2205
			}#if end
2206
 
2207
		#針對每組一維陣列
2208
		foreach($conf["inputArray"] as $array){
2209
 
2210
			#如果是空陣列
2211
			if(empty($array)){
2212
 
2213
				#跳過之
2214
				continue;
2215
 
2216
				}#if end
2217
 
2218
			#針對該一維陣列中的每個元素
2219
			foreach($array as $arrayAdded){
2220
 
2221
				#如果不允許重複的內容
2222
				if($conf["allowRepeat"]==="false"){
2223
 
2224
					#如果有指定 key 階層
2225
					if(isset($conf["equalKeyStruc"])){
2226
 
2227
						#初始化儲存用來比對是否相符的變數
2228
						$valInArray=$arrayAdded;
2229
 
2230
						#debug
2231
						#var_dump(__LINE__,$valInArray);
2232
 
2233
						#針對每個 key 階層
2234
						foreach($conf["equalKeyStruc"] as $keyLayer){
2235
 
2236
							#如果沒有該階層
2237
							if(!isset($valInArray[$keyLayer])){
2238
 
2239
								#換看下個元素
2240
								continue 2;
2241
 
2242
								}#if end
2243
 
2244
							#取得對應key的內容
2245
							$valInArray=$valInArray[$keyLayer];
2246
 
2247
							}#foreach end
2248
 
2249
						#預設要新增
2250
						$add=true;
2251
 
2252
						#針對已經合併好的陣列中的每個元素
2253
						foreach($result["content"] as $index => $val){
2254
 
2255
							#針對每個 key 階層
2256
							foreach($conf["equalKeyStruc"] as $keyLayer){
2257
 
2258
								#取得對應key的內容
2259
								$val=$val[$keyLayer];
2260
 
2261
								}#foreach end
2262
 
2263
							#如果遇到新的相同內容
2264
							if($val===$valInArray){
2265
 
2266
								#用新的取代舊的
2267
								$result["content"][$index]=$array;
2268
 
2269
								#設置不用新增
2270
								$add=false;
2271
 
2272
								}#if end
2273
 
2274
							}#foreach end
2275
 
2276
						#如果要新增
2277
						if($add){
2278
 
2279
							#新增之
2280
							$result["content"][]=$arrayAdded;
2281
 
2282
							#debug
2283
							#var_dump(__LINE__,$result["content"]);
2284
 
2285
							#跳到下一個
2286
							continue;
2287
 
2288
							}#if end						
2289
 
2290
						}#if end
2291
 
2292
					#反之如果有重複了
2293
					else if(in_array($arrayAdded,$result["content"])){
2294
 
2295
						#跳到下一個
2296
						continue;
2297
 
2298
						}#if end
2299
 
2300
					}#if end
2301
 
2302
				#將之合併到 $result 陣列裡面
2303
				$result["content"][]=$arrayAdded;
2304
 
2305
				}#foreach end
2306
 
2307
			}#foreach end
2308
 
2309
		#設置執行正常
2310
		$result["status"]="true";
2311
 
2312
		#回傳結果
2313
		return $result;		
2314
 
2315
		}#function mergeMultiDimensionArray end
2316
 
2317
	/*
2318
	#函式說明:
2319
	#透過多個擁有一樣數量元素的一維陣列,透過指定的連接字串,組成一組同樣數量的一維陣列。
2320
	#回傳結果:
2321
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常。
2322
	#$result["error"],錯誤訊息。
2323
	#$result["content"],組合成新值的一維陣列。
2324
	#$result["function"],當前執行的函數名稱。
2325
	#$result["argu"],使用的參數.
2326
	#必填參數:
2327
	#$conf["arrays"],二維陣列,爲要依序由哪些陣列變數來進行組合
2328
	$conf["arrays"]=array();
2329
	#可省略參數:
2330
	#$conf["combineSymbolArray"],陣列字串,數量爲$conf["arrays"]減一,爲用於連結各一維陣列變數的連接字串,預設皆爲"<=>"。
2331
	#$conf["combineSymbolArray"]=array();
2332
	#參考資料:
2333
	#無.
2334
	#備註:
2335
	#無.
2336
	*/
2337
	public static function combineToNewArray(&$conf){
2338
 
2339
		#初始化要回傳的變數
2340
		$result=array();
2341
 
2342
		#初始化儲存合併好的一維陣列
2343
		$result["content"]=array();
2344
 
2345
		#取得當前執行的函數名稱
2346
		$result["function"]=__FUNCTION__;
2347
 
2348
		#取得參數
2349
		$result["argu"]=$conf;
2350
 
2351
		#如果 $conf 不為陣列
2352
		if(gettype($conf)!="array"){
2353
 
2354
			#設置執行失敗
2355
			$result["status"]="false";
2356
 
2357
			#設置執行錯誤訊息
2358
			$result["error"][]="\$conf變數須為陣列形態";
2359
 
2360
			#如果傳入的參數為 null
2361
			if($conf==null){
2362
 
2363
				#設置執行錯誤訊息
2364
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2365
 
2366
				}#if end
2367
 
2368
			#回傳結果
2369
			return $result;
2370
 
2371
			}#if end
2372
 
2373
		#函式說明:
2374
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2375
		#回傳的結果:
2376
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2377
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2378
		#$result["function"],當前執行的函式名稱.
2379
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2380
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2381
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2382
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2383
		#必填寫的參數:
2384
		$conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
2385
		$conf["variableCheck.isexistMulti"]["variableCheck"]=array("arrays");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2386
		#可以省略的參數:
2387
		$conf["variableCheck.isexistMulti"]["variableType"]=array("array");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
2388
		$conf["variableCheck.isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2389
		$checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
2390
		unset($conf["variableCheck.isexistMulti"]);
2391
 
2392
		#如果檢查出錯
2393
		if($checkResult["status"]=="false"){
2394
 
2395
			#設置執行不正常
2396
			$result["status"]="false";
2397
 
2398
			#設置錯誤訊息
2399
			$result["erorr"]=$checkResult;
2400
 
2401
			#回傳結果
2402
			return $result;
2403
 
2404
			}#if end
2405
 
2406
		#如果檢查不通過
2407
		if($checkResult["passed"]=="false"){
2408
 
2409
			#設置執行不正常
2410
			$result["status"]="false";
2411
 
2412
			#設置錯誤訊息
2413
			$result["erorr"]=$checkResult;
2414
 
2415
			#回傳結果
2416
			return $result;
2417
 
2418
			}#if end
2419
 
2420
		#函式說明:
2421
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
2422
		#回傳結果:
2423
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2424
		#$result["error"],錯誤訊息陣列.
2425
		#$result["function"],當前執行的函式名稱.
2426
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
2427
		#必填參數:
2428
		#$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
2429
		$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf;
2430
		#$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
2431
		$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array("arrays");
2432
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
2433
		$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array("array");
2434
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
2435
		$argu=&$conf;
2436
		#可省略參數:
2437
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,"null"代表不指定.
2438
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array("",);
2439
		#無
2440
		$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
2441
		unset($conf["variableCheck.checkSkipableVarType"]);
2442
 
2443
		#如果檢查出錯
2444
		if($checkResult["status"]=="false"){
2445
 
2446
			#設置執行不正常
2447
			$result["status"]="false";
2448
 
2449
			#設置錯誤訊息
2450
			$result["erorr"]=$checkResult;
2451
 
2452
			#回傳結果
2453
			return $result;
2454
 
2455
			}#if end
2456
 
2457
		#如果檢查不通過
2458
		if($checkResult["passed"]=="false"){
2459
 
2460
			#設置執行不正常
2461
			$result["status"]="false";
2462
 
2463
			#設置錯誤訊息
2464
			$result["erorr"]=$checkResult;
2465
 
2466
			#回傳結果
2467
			return $result;
2468
 
2469
			}#if end
2470
 
2471
		#如果 $conf["combineSymbolArray"] 沒有設定
2472
		if(!isset($conf["combineSymbolArray"])){
2473
 
2474
			#執行迴圈 count($conf["arrays"]) 次
2475
			for($i=0;$i<count($conf["arrays"]);$i++){
2476
 
2477
				#預設爲 "<=>"
2478
				$conf["combineSymbolArray"][]="<=>";
2479
 
2480
				}#for end
2481
 
2482
			}#if end
2483
 
2484
		#執行 count($conf["arrays"][0]) 次迴圈
2485
		for($i=0;$i<count($conf["arrays"][0]);$i++){
2486
 
2487
			#執行迴圈 count($conf["arrays"]) 次
2488
			for($j=0;$j<count($conf["arrays"]);$j++){
2489
 
2490
				#如果不是第一個陣列
2491
				if($j!=0){
2492
 
2493
					#取得新陣列的元素與連接字串
2494
					$result["content"][$i]=$result["content"][$i].$conf["combineSymbolArray"][$j-1].$conf["arrays"][$j][$i];
2495
 
2496
					}#if end
2497
 
2498
				#反之是第一個陣列
2499
				else{
2500
 
2501
					#取得新陣列的元素
2502
					$result["content"][$i]=$conf["arrays"][$j][$i];
2503
 
2504
					}#else end
2505
 
2506
				}#for end
2507
 
2508
			}#for end
2509
 
2510
		#執行到這邊代表執行正常
2511
		$result["status"]="true";
2512
 
2513
		#回傳結果
2514
		return $result;
2515
 
2516
		}#function combineToNewArray end
2517
 
2518
	/*
2519
	#函式說明:
2520
	#將陣列倒置.
2521
	#回傳的結果:
2522
	#$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗.
2523
	#$result["error"],錯誤訊息陣列.
2524
	#$result["function"],當前執行的函數名稱.
2525
	#$result["convertArray"],轉置後的陣列內容.
2526
	#必填參數:
2527
	#$conf["inputArray"],陣列,要倒置的陣列.
2528
	$conf["inputArray"]=array();
2529
	#可省略參數:
2530
	#無.
2531
	#參考資料:
2532
	#無.
2533
	#備註:
2534
	#參考資料來源 http://tw2.php.net/array_reverse => 陣列倒置的內建涵式.
2535
	*/
2536
	public static function convertArray(&$conf){
2537
 
2538
		#初始化要回傳的內容
2539
		$result=array();
2540
 
2541
		#取得當前執行的函數名稱
2542
		$result["function"]=__FUNCTION__;
2543
 
2544
		#如果 $conf 不為陣列
2545
		if(gettype($conf)!="array"){
2546
 
2547
			#設置執行失敗
2548
			$result["status"]="false";
2549
 
2550
			#設置執行錯誤訊息
2551
			$result["error"][]="\$conf變數須為陣列形態";
2552
 
2553
			#如果傳入的參數為 null
2554
			if($conf==null){
2555
 
2556
				#設置執行錯誤訊息
2557
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2558
 
2559
				}#if end
2560
 
2561
			#回傳結果
2562
			return $result;
2563
 
2564
			}#if end
2565
 
2566
		#函式說明:
2567
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2568
		#回傳的結果:
2569
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2570
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2571
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2572
		#必填寫的參數:
2573
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
2574
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("inputArray");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2575
		#可以省略的參數:
2576
		#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
2577
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2578
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
2579
		unset($conf["variableCheck"]["isexistMuti"]);
2580
 
2581
		#如果檢查失敗
2582
		if($checkResult["status"]=="false"){
2583
 
2584
			#設置執行不正常
2585
			$result["status"]="false";
2586
 
2587
			#設置執行錯誤訊息
2588
			$result["error"]=$checkResult;
2589
 
2590
			#回傳結果
2591
			return $result;
2592
 
2593
			}#if end
2594
 
2595
		#如果檢查不通過
2596
		if($checkResult["passed"]=="false"){
2597
 
2598
			#設置執行不正常
2599
			$result["status"]="false";
2600
 
2601
			#設置執行錯誤訊息
2602
			$result["error"]=$checkResult;
2603
 
2604
			#回傳結果
2605
			return $result;
2606
 
2607
			}#if end
2608
 
2609
		#取得轉置後的內容
2610
		$result["convertArray"]=array_reverse($conf["inputArray"]);
2611
 
2612
		#值行到這邊執行成功
2613
		$result["status"]="true";
2614
 
2615
		#回傳節果
2616
		return $result;
2617
 
2618
		}#function convertArray end
2619
 
2620
	/*
2621
	#函式說明:
2622
	#將一陣列每個元素間插入一個特定的元素
2623
	#回傳的結果:
2624
	#$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗
2625
	#$result["error"],錯誤訊息陣列.
2626
	#$result["function"],當前執行的函數
2627
	#$result["content"],插入完元素的新陣列.
2628
	#必填參數:
2629
	#$conf["inputArray"],陣列,要處理的陣列變數.
2630
	$conf["inputArray"]=array();
2631
	#$conf["insertElement"],字串,要加入的元素.
2632
	$conf["insertElement"]="";
2633
	#可省略參數:
2634
	#無.
2635
	#參考資料:
2636
	#無.
2637
	#備註:
2638
	#無.
2639
	*/
2640
	public static function insertElementBetweenElements(&$conf){
2641
 
2642
		#初始化要回傳的結果
2643
		$result=array();
2644
 
2645
		#取得當前執行的函數名稱
2646
		$result["function"]=__FUNCTION__;
2647
 
2648
		#如果 $conf 不為陣列
2649
		if(gettype($conf)!="array"){
2650
 
2651
			#設置執行失敗
2652
			$result["status"]="false";
2653
 
2654
			#設置執行錯誤訊息
2655
			$result["error"][]="\$conf變數須為陣列形態";
2656
 
2657
			#如果傳入的參數為 null
2658
			if($conf==null){
2659
 
2660
				#設置執行錯誤訊息
2661
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2662
 
2663
				}#if end
2664
 
2665
			#回傳結果
2666
			return $result;
2667
 
2668
			}#if end
2669
 
2670
		#檢查參數
2671
		#函式說明:
2672
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2673
		#回傳的結果:
2674
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2675
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2676
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2677
		#必填寫的參數:
2678
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
2679
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("inputArray","insertElement");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2680
		#可以省略的參數:
2681
		$conf["variableType"]=array("array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
2682
		$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2683
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
2684
		unset($conf["variableCheck"]["isexistMuti"]);
2685
 
2686
		#如果檢查失敗
2687
		if($checkResult["status"]=="false"){
2688
 
2689
			#設置錯誤識別
2690
			$result["status"]="false";
2691
 
2692
			#設置錯誤訊息
2693
			$result["error"]=$checkResult;
2694
 
2695
			#回傳結果
2696
			return $result;
2697
 
2698
			}#if end
2699
 
2700
		#如果檢查不通過
2701
		if($checkResult["passed"]=="false"){
2702
 
2703
			#設置錯誤識別
2704
			$result["status"]="false";
2705
 
2706
			#設置錯誤訊息
2707
			$result["error"]=$checkResult;
2708
 
2709
			#回傳結果
2710
			return $result;
2711
 
2712
			}#if end
2713
 
2714
		#複製原始的陣列
2715
		$oriArray=$conf["inputArray"];
2716
 
2717
		#初始化暫存和合併後的新陣列變數
2718
		$newCombinedArray=array();
2719
 
2720
		#執行 count($oriArray) 次迴圈
2721
		for($j=0;$j<count($oriArray);$j++){
2722
 
2723
			#取得原始陣列的一個元素
2724
			$newCombinedArray[]=$oriArray[$j];
2725
 
2726
			#如果 不是最後一個原始陣列的元素
2727
			if($j!=count($oriArray)-1){
2728
 
2729
				#放置一個元素到陣列裡面
2730
				$newCombinedArray[]=$conf["insertElement"];
2731
 
2732
				}#if end
2733
 
2734
			}#for end
2735
 
2736
		#取得插入完元素的陣列
2737
		$result["content"]=$newCombinedArray;
2738
 
2739
		#設置執行正常的識別
2740
		$result["status"]="true";
2741
 
2742
		#回傳結果
2743
		return $result;
2744
 
2745
		}#function insertElementBetweenElements end
2746
 
2747
	/*
2748
	#函式說明:
2749
	#將特定符號間隔的字串"a,b,c"變成陣列.
2750
	#回傳的結果:
2751
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2752
	#$result["function"],當前執行的function名稱.
2753
	#$result["argu"],使用的參數.
2754
	#$result["error"],錯誤訊息陣列.
2755
	#$result["content"],處理好的內容.
2756
	#必填參數:
2757
	#$conf["inputStr"],字串,要轉一維陣列的字串
2758
	$conf["inputStr"]="";
2759
	#可省略參數:
2760
	#$conf["spiltSymbol"],字串,用來區隔字串的符號,預設為","
2761
	#$conf["spiltSymbol"]=",";
2762
	#參考資料:
2763
	#無.
2764
	#備註:
2765
	#無.
2766
	*/
2767
	public static function stringToArray(&$conf){
2768
 
2769
		#初始化要回傳的變數
2770
		$result=array();
2771
 
2772
		#初始化當前執行的函數名稱
2773
		$result["funciton"]=__FUNCTION__;
2774
 
2775
		#如果 $conf 不為陣列
2776
		if(gettype($conf)!="array"){
2777
 
2778
			#設置執行失敗
2779
			$result["status"]="false";
2780
 
2781
			#設置執行錯誤訊息
2782
			$result["error"][]="\$conf變數須為陣列形態";
2783
 
2784
			#如果傳入的參數為 null
2785
			if($conf==null){
2786
 
2787
				#設置執行錯誤訊息
2788
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2789
 
2790
				}#if end
2791
 
2792
			#回傳結果
2793
			return $result;
2794
 
2795
			}#if end
2796
 
2797
		#取得使用的參數
2798
		$result["argu"]=$conf;
2799
 
2800
		#檢查參數
2801
		#函式說明:
2802
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2803
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2804
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2805
		#$result["function"],當前執行的函式名稱.
2806
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2807
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2808
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2809
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2810
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2811
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
2812
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
2813
		#必填寫的參數:
2814
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2815
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2816
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2817
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputStr");
2818
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
2819
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
2820
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2821
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2822
		#可以省略的參數:
2823
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
2824
		#$conf["canBeEmptyString"]="false";
2825
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2826
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("spiltSymbol");
2827
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
2828
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
2829
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2830
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(",");
2831
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2832
		#$conf["arrayCountEqualCheck"][]=array();
2833
		#參考資料來源:
2834
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2835
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2836
		unset($conf["variableCheck::checkArguments"]);
2837
 
2838
		#如果檢查有誤
2839
		if($checkResult["status"]=="false"){
2840
 
2841
			#設置錯誤識別
2842
			$result["status"]="false";
2843
 
2844
			#設置錯誤訊息
2845
			$result["error"]=$checkResult;
2846
 
2847
			#回傳結果
2848
			return $result;
2849
 
2850
			}#if end
2851
 
2852
		#如果檢查不通過
2853
		if($checkResult["passed"]=="false"){
2854
 
2855
			#設置錯誤識別
2856
			$result["status"]="false";
2857
 
2858
			#設置錯誤訊息
2859
			$result["error"]=$checkResult;
2860
 
2861
			#回傳結果
2862
			return $result;
2863
 
2864
			}#if end
2865
 
2866
		#函式說明:
2867
		#將固定格式的字串分開,並回傳分開的結果。
2868
		#回傳結果:
2869
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2870
		#$result["error"],錯誤訊息陣列
2871
		#$result["function"],當前執行的函數名稱.
2872
		#$result["argu"],使用的參數.
2873
		#$result["oriStr"],要分割的原始字串內容
2874
		#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
2875
		#$result["dataCounts"],爲總共分成幾段
2876
		#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
2877
		#必填參數:
2878
		$conf["stringProcess::spiltString"]["stringIn"]=$conf["inputStr"];#要處理的字串。
2879
		$conf["stringProcess::spiltString"]["spiltSymbol"]=$conf["spiltSymbol"];#爲以哪個符號作爲分割
2880
		#可省略參數:
2881
		#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
2882
		$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
2883
		$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
2884
		unset($conf["stringProcess::spiltString"]);
2885
 
2886
		#如果分割字串失敗
2887
		if($spiltString["status"]==="false"){
2888
 
2889
			#設置錯誤識別
2890
			$result["status"]="false";
2891
 
2892
			#設置錯誤訊息
2893
			$result["error"]=$spiltString;
2894
 
2895
			#回傳結果
2896
			return $result;
2897
 
2898
			}#if end
2899
 
2900
		#取得分割好的字串陣列
2901
		$result["content"]=$spiltString["dataArray"];
2902
 
2903
		#設置執行正常
2904
		$result["status"]="true";
2905
 
2906
		#回傳結果
2907
		return $result;
2908
 
2909
		}#function stringToArray end
2910
 
2911
	/*
2912
	#函式說明:
2913
	#將一維陣列轉換為用特定符號間隔的字串,ex:array("1","2","3") to "a;b;c;".
2914
	#回傳的結果:
2915
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2916
	#$result["function"],當前執行的function名稱
2917
	#$result["error"],錯誤訊息陣列.
2918
	#$result["content"],處理好的字串.
2919
	#$result["argu"],使用的參數.
2920
	#必填參數:
2921
	#$conf["inputArray"],字串陣列,要轉成字串的一維陣列.
2922
	$conf["inputArray"]=array();
2923
	#可省略參數:
2924
	#$conf["spiltSymbol"],字串,用來區隔字串的符號,預設為;
2925
	#$conf["spiltSymbol"]=";";
2926
	#$conf["skipEnd"],字串,結尾是否不要加上符號,預設為"false",要加上符號,"true"代表不要加上符號。
2927
	#$conf["skipEnd"]="";
2928
	#$conf["spiltSymbolAtStart"],字串,是否要在開頭加上spiltSymbol,預設為"false",代表不要;反之為“true”.
2929
	#$conf["spiltSymbolAtStart"]="";
2930
	#參考資料:
2931
	#無.
2932
	#備註:
2933
	#無.
2934
	*/
2935
	public static function arrayToString(&$conf){
2936
 
2937
		#初始化要回傳的變數
2938
		$result=array();
2939
 
2940
		#初始化當前執行的函數名稱
2941
		$result["funciton"]=__FUNCTION__;
2942
 
2943
		#如果 $conf 不為陣列
2944
		if(gettype($conf)!="array"){
2945
 
2946
			#設置執行失敗
2947
			$result["status"]="false";
2948
 
2949
			#設置執行錯誤訊息
2950
			$result["error"][]="\$conf變數須為陣列形態";
2951
 
2952
			#如果傳入的參數為 null
2953
			if($conf==null){
2954
 
2955
				#設置執行錯誤訊息
2956
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2957
 
2958
				}#if end
2959
 
2960
			#回傳結果
2961
			return $result;
2962
 
2963
			}#if end
2964
 
2965
		#取得使用的參數
2966
		$result["argu"]=$conf;
2967
 
2968
		#函式說明:
2969
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
2970
		#回傳結果:
2971
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2972
		#$result["error"],執行不正常結束的錯訊息陣列.
2973
		#$result["simpleError"],簡單表示的錯誤訊息.
2974
		#$result["function"],當前執行的函式名稱.
2975
		#$result["argu"],設置給予的參數.
2976
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2977
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2978
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2979
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
2980
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
2981
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2982
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
2983
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
2984
		#必填參數:
2985
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2986
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2987
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2988
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2989
		#可省略參數:
2990
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2991
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
2992
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
2993
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
2994
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
2995
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2996
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
2997
		#$conf["canNotBeEmpty"]=array();
2998
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
2999
		#$conf["canBeEmpty"]=array();
3000
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
3001
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("skipEnd","spiltSymbolAtStart");
3002
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3003
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("spiltSymbol","skipEnd","spiltSymbolAtStart");
3004
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3005
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string");
3006
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3007
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(";","false","false");
3008
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
3009
		#$conf["variadbleCheck::checkArguments"]["disallowAllSkipableVarIsEmpty"]="";
3010
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
3011
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
3012
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
3013
		#$conf["disallowAllSkipableVarNotExist"]="";
3014
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3015
		#$conf["arrayCountEqualCheck"][]=array();
3016
		#參考資料:
3017
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3018
		#備註:
3019
		#無.
3020
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3021
		unset($conf["variableCheck::checkArguments"]);
3022
 
3023
		#如果執行失敗
3024
		if($checkArguments["status"]==="false"){
3025
 
3026
			#設置執行錯誤的識別
3027
			$result["status"]="false";
3028
 
3029
			#設置錯誤訊息
3030
			$result["error"]=$checkArguments;
3031
 
3032
			#回傳結果
3033
			return $result;
3034
 
3035
			}#if end
3036
 
3037
		#如果檢查不通過
3038
		if($checkArguments["passed"]==="false"){
3039
 
3040
			#設置執行錯誤的識別
3041
			$result["status"]="false";
3042
 
3043
			#設置錯誤訊息
3044
			$result["error"]=$checkArguments;
3045
 
3046
			#回傳結果
3047
			return $result;
3048
 
3049
			}#if end
3050
 
3051
		#初始化 $result["content"]
3052
		$result["content"]="";
3053
 
3054
		#如果開頭就要放置分割的字串
3055
		if($conf["spiltSymbolAtStart"]==="true"){
3056
 
3057
			#串接分割的字串
3058
			$result["content"]=$result["content"].$conf["spiltSymbol"];
3059
 
3060
			}#if end
3061
 
3062
		#紀錄總共有幾個變數
3063
		$Tcount=count($conf["inputArray"]);
3064
 
3065
		#暫存計數的變數
3066
		$count=0;
3067
 
3068
		#$conf["inputArray"]陣列有幾個元素就執行幾次
3069
		foreach($conf["inputArray"] as $elementValue){
3070
 
3071
			#計數
3072
			$count++;
3073
 
3074
			#如果要串接的內容不為字串
3075
			if(gettype($elementValue)!=="string"){
3076
 
3077
				#設置錯誤識別
3078
				$result["status"]="false";
3079
 
3080
				#設置錯誤訊息
3081
				$result["error"][]="要串接的內容須為字串";
3082
 
3083
				#設置錯誤訊息
3084
				$result["error"][]=$elementValue;
3085
 
3086
				#設置錯誤訊息
3087
				$result["error"][]="wrong type is ".gettype($elementValue);
3088
 
3089
				#回傳結果
3090
				return $result;
3091
 
3092
				}#if end
3093
 
3094
			#如果是最後一個
3095
			if($count===$Tcount && $conf["skipEnd"]==="true"){
3096
 
3097
				#組合字串
3098
				$result["content"]=$result["content"].$elementValue;
3099
 
3100
				}#if end
3101
 
3102
			#反之
3103
			else{
3104
 
3105
				#組合字串
3106
				$result["content"]=$result["content"].$elementValue.$conf["spiltSymbol"];
3107
 
3108
				}#else
3109
 
3110
			}#foreach end
3111
 
3112
		#設置執行結果正常
3113
		$result["status"]="true";
3114
 
3115
		#回傳結果
3116
		return $result;
3117
 
3118
		}#funciton arrayToString
3119
 
3120
	/*
3121
	#函式說明:
3122
	#傳參考來交換兩變數
3123
	#回傳結果:
3124
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3125
	#$result["function"],當前執行的function名稱
3126
	#$result["error"],錯誤訊息陣列.
3127
	#必填參數:
3128
	#$conf["num1"],參考變數,要交換的變數1。
3129
	$conf["num1"]=&;
3130
	#$conf["num2"],參考變數,要交換的變數2。
3131
	$conf["num2"]=&;
3132
	#可省略參數:
3133
	#無.
3134
	#參考資料:
3135
	#無.
3136
	#備註:
3137
	#無.
3138
	*/
3139
	public static function swapByReference(&$conf){
3140
 
3141
		#初始化要回傳的結果
3142
		$result=array();
3143
 
3144
		#取得當前函數名稱
3145
		$result["function"]=__FUNCTION__;
3146
 
3147
		#如果 $conf 不為陣列
3148
		if(gettype($conf)!="array"){
3149
 
3150
			#設置執行失敗
3151
			$result["status"]="false";
3152
 
3153
			#設置執行錯誤訊息
3154
			$result["error"][]="\$conf變數須為陣列形態";
3155
 
3156
			#如果傳入的參數為 null
3157
			if($conf==null){
3158
 
3159
				#設置執行錯誤訊息
3160
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3161
 
3162
				}#if end
3163
 
3164
			#回傳結果
3165
			return $result;
3166
 
3167
			}#if end
3168
 
3169
		#檢查參數
3170
		#函式說明:
3171
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
3172
		#回傳的結果:
3173
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3174
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3175
		#$result["function"],當前執行的函式名稱.
3176
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3177
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3178
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3179
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3180
		#必填寫的參數:
3181
		$conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
3182
		$conf["variableCheck.isexistMulti"]["variableCheck"]=array("num1","num2");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
3183
		#可以省略的參數:
3184
		#$conf["variableCheck.isexistMulti"]["variableType"]=array("array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
3185
		$conf["variableCheck.isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
3186
		$checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
3187
		unset($conf["variableCheck.isexistMulti"]);
3188
 
3189
		#如果 $checkResult["status"] 為 "false"
3190
		if($checkResult["status"]=="false"){
3191
 
3192
			#設置錯誤識別
3193
			$result["status"]="false";
3194
 
3195
			#設置發生錯誤的函式
3196
			$result["error"]=$checkResult;
3197
 
3198
			#回傳結果
3199
			return $result;
3200
 
3201
			}#if end
3202
 
3203
		#如果 $checkResult["passed"] 為 "false"
3204
		if($checkResult["passed"]=="false"){
3205
 
3206
			#設置錯誤識別
3207
			$result["status"]="false";
3208
 
3209
			#設置發生錯誤的函式
3210
			$result["error"]=$checkResult;
3211
 
3212
			#回傳結果
3213
			return $result;
3214
 
3215
			}#if end
3216
 
3217
		#將第一個變數存在 $tmp 裡面
3218
		$tmp=$conf["num1"];
3219
 
3220
		#將第一個變數用第二個變數取代
3221
		$conf["num1"]=$conf["num2"];
3222
 
3223
		#將第二個變數用第一個變數取代
3224
		$conf["num2"]=$tmp;
3225
 
3226
		#執行到這邊代表正常
3227
		$result["status"]="true";
3228
 
3229
		#回傳結果
3230
		return $result;
3231
 
3232
		}#function swapByReference end
3233
 
3234
	/*
3235
	#函式說明:
3236
	#排序含有多資訊的二維陣列
3237
	#回傳結果:
3238
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3239
	#$result["function"],當前執行的function名稱
3240
	#$result["error"],錯誤訊息陣列.
3241
	#$result["content"],處理好的字串.
3242
	#必填參數:
3243
	#$conf["unArrangeArray"],參考二維陣列,要的排序二維陣列。
3244
	$conf["unArrangeArray"]=&;
3245
	#$conf["compareKey"],字串,儲存用來比較大小的一維陣列key名稱。
3246
	$conf["compareKey"]=;
3247
	#可省參數:
3248
	#$conf["type"],字串,排序的類型,"asc"代表遞增,"desc"代表遞減,預設為"desc"。
3249
	$conf["type"]="desc";
3250
	#可省略參數:
3251
	#無.
3252
	#參考資料:
3253
	#無.
3254
	#備註:
3255
	#排序有錯.
3256
	*/
3257
	public static function arrangeTwoDmensionArray(&$conf){
3258
 
3259
		#初始化要回傳的變數
3260
		$result=array();
3261
 
3262
		#初始化當前執行的函數名稱
3263
		$result["funciton"]=__FUNCTION__;
3264
 
3265
		#如果 $conf 不為陣列
3266
		if(gettype($conf)!="array"){
3267
 
3268
			#設置執行失敗
3269
			$result["status"]="false";
3270
 
3271
			#設置執行錯誤訊息
3272
			$result["error"][]="\$conf變數須為陣列形態";
3273
 
3274
			#如果傳入的參數為 null
3275
			if($conf==null){
3276
 
3277
				#設置執行錯誤訊息
3278
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3279
 
3280
				}#if end
3281
 
3282
			#回傳結果
3283
			return $result;
3284
 
3285
			}#if end
3286
 
3287
		#檢查參數
3288
		#函式說明:
3289
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
3290
		#回傳的結果:
3291
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3292
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3293
		#$result["function"],當前執行的函式名稱.
3294
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3295
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3296
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3297
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3298
		#必填寫的參數:
3299
		$conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
3300
		$conf["variableCheck.isexistMulti"]["variableCheck"]=array("unArrangeArray","compareKey");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
3301
		#可以省略的參數:
3302
		$conf["variableCheck.isexistMulti"]["variableType"]=array("array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
3303
		$conf["variableCheck.isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
3304
		$checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
3305
		unset($conf["variableCheck.isexistMulti"]);
3306
 
3307
		#如果 $checkResult["status"] 為 "false"
3308
		if($checkResult["status"]=="false"){
3309
 
3310
			#設置錯誤識別
3311
			$result["status"]="false";
3312
 
3313
			#設置發生錯誤的函式
3314
			$result["error"]=$checkResult;
3315
 
3316
			#回傳結果
3317
			return $result;
3318
 
3319
			}#if end
3320
 
3321
		#如果 $checkResult["passed"] 為 "false"
3322
		if($checkResult["passed"]=="false"){
3323
 
3324
			#設置錯誤識別
3325
			$result["status"]="false";
3326
 
3327
			#設置發生錯誤的函式
3328
			$result["error"]=$checkResult;
3329
 
3330
			#回傳結果
3331
			return $result;
3332
 
3333
			}#if end
3334
 
3335
		#檢查可省略的參數
3336
		#函式說明:
3337
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
3338
		#回傳結果:
3339
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3340
		#$result["error"],錯誤訊息陣列.
3341
		#$result["function"],當前執行的函式名稱.
3342
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
3343
		#必填參數:
3344
		#$conf["checkedVar"],陣列,要檢查的變數陣列名稱為?
3345
		$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf;
3346
		#$conf["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
3347
		$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array("type");
3348
		#$conf["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
3349
		$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array("string");
3350
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
3351
		$argu=&$conf;
3352
		#可省略參數:
3353
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,"null"代表不指定.
3354
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array("desc");
3355
		#無
3356
		$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
3357
		unset($conf["variableCheck.checkSkipableVarType"]);
3358
 
3359
		#var_dump($checkResult);
3360
 
3361
		#如果 $checkResult["status"] 為 "false"
3362
		if($checkResult["status"]=="false"){
3363
 
3364
			#設置錯誤識別
3365
			$result["status"]="false";
3366
 
3367
			#設置發生錯誤的函式
3368
			$result["error"]=$checkResult;
3369
 
3370
			#回傳結果
3371
			return $result;
3372
 
3373
			}#if end
3374
 
3375
		#如果 $checkResult["passed"] 為 "false"
3376
		if($checkResult["passed"]=="false"){
3377
 
3378
			#設置錯誤識別
3379
			$result["status"]="false";
3380
 
3381
			#設置發生錯誤的函式
3382
			$result["error"]=$checkResult;
3383
 
3384
			#回傳結果
3385
			return $result;
3386
 
3387
			}#if end
3388
 
3389
		#取得要排序的數目有多少
3390
		$count=count($conf["unArrangeArray"]);
3391
 
3392
		#debug
3393
		#var_dump($count);
3394
 
3395
		#debug
3396
		#var_dump($conf["unArrangeArray"]);
3397
 
3398
		#/*
3399
 
3400
		#判斷 $conf["type"]
3401
		switch($conf["type"]){
3402
 
3403
			#如果是 "desc"
3404
			case "desc":
3405
 
3406
				#迴圈,執行 $count 次
3407
				for($i=0;$i<$count;$i++){
3408
 
3409
					#迴圈 執行 $count-$i-1 次
3410
					for($j=$i+1;$j<$count;$j++){
3411
 
3412
						#debug
3413
						#echo $conf["unArrangeArray"][0][$conf["compareKey"]]." ".$conf["unArrangeArray"][1][$conf["compareKey"]]." ".$conf["unArrangeArray"][2][$conf["compareKey"]]."<p>";
3414
 
3415
						#debug
3416
						#echo "<p>max=".$max." \$i=".$i." \$j=".$j." ".$max."<".$conf["unArrangeArray"][$j][$conf["compareKey"]]."<p>";
3417
 
3418
						#如過資料不存在
3419
						if(!isset($conf["unArrangeArray"][$i])){
3420
 
3421
							#跳到下一輪
3422
							continue;
3423
 
3424
							}#if end
3425
 
3426
						#如果當前數值大於當前的$max
3427
						if($conf["unArrangeArray"][$i][$conf["compareKey"]]<$conf["unArrangeArray"][$j][$conf["compareKey"]]){
3428
 
3429
							#debug
3430
							#echo "<p>".$max."<".$conf["unArrangeArray"][$j][$conf["compareKey"]]."<p>";
3431
 
3432
							#函式說明:
3433
							#傳參考來交換兩變數
3434
							#回傳結果:
3435
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3436
							#$result["function"],當前執行的function名稱
3437
							#$result["error"],錯誤訊息陣列.
3438
							#必填參數:
3439
							#$conf["arrays.swap"]["num1"],要交換的變數1。
3440
							$conf["arrays.swap"]["num1"]=&$conf["unArrangeArray"][$i];
3441
							#$conf["arrays.swap"]["num2"],要交換的變數2。
3442
							$conf["arrays.swap"]["num2"]=&$conf["unArrangeArray"][$j];
3443
							$swapResult=arrays::swapByReference($conf["arrays.swap"]);
3444
							unset($conf["arrays.swap"]);
3445
 
3446
							#如果 $swapResult["status"] 等於 "false"
3447
							if($swapResult["status"]=="false"){
3448
 
3449
								#設置執行錯誤
3450
								$result["status"]="false";
3451
 
3452
								#設置錯誤訊息
3453
								$result["error"]=$swapResult;
3454
 
3455
								#回傳結果
3456
								return $result;
3457
 
3458
								}#if end
3459
 
3460
							}#if end
3461
 
3462
						#debug
3463
						#echo $conf["unArrangeArray"][0][$conf["compareKey"]]." ".$conf["unArrangeArray"][1][$conf["compareKey"]]." ".$conf["unArrangeArray"][2][$conf["compareKey"]]."<p>";
3464
 
3465
						}#for end
3466
 
3467
					}#for end
3468
 
3469
				#跳出switch
3470
				break;
3471
 
3472
			#如果是 "asc"
3473
			case "asc":
3474
 
3475
				#迴圈,執行 $count 次
3476
				for($i=0;$i<$count;$i++){
3477
 
3478
					#迴圈 執行 $count-$i-1 次
3479
					for($j=$i+1;$j<$count;$j++){
3480
 
3481
						#如果當前數值小於當前的$min
3482
						if($conf["unArrangeArray"][$i][$conf["compareKey"]]>$conf["unArrangeArray"][$j][$conf["compareKey"]]){
3483
 
3484
							#debug
3485
							#echo "<p>當前數值小於當前的$min<p>";
3486
 
3487
							#函式說明:
3488
							#傳參考來交換兩變數
3489
							#回傳結果:
3490
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3491
							#$result["function"],當前執行的function名稱
3492
							#$result["error"],錯誤訊息陣列.
3493
							#必填參數:
3494
							#$conf["arrays.swap"]["num1"],要交換的變數1。
3495
							$conf["arrays.swap"]["num1"]=&$conf["unArrangeArray"][$i];
3496
							#$conf["arrays.swap"]["num2"],要交換的變數2。
3497
							$conf["arrays.swap"]["num2"]=&$conf["unArrangeArray"][$j];
3498
							$swapResult=arrays::swapByReference($conf["arrays.swap"]);
3499
							unset($conf["arrays.swap"]);
3500
 
3501
							#如果 $swapResult["status"] 等於 "false"
3502
							if($swapResult["status"]=="false"){
3503
 
3504
								#設置執行錯誤
3505
								$result["status"]="false";
3506
 
3507
								#設置錯誤訊息
3508
								$result["error"]=$swapResult;
3509
 
3510
								#回傳結果
3511
								return $result;
3512
 
3513
								}#if end
3514
 
3515
							}#if end
3516
 
3517
						}#for end
3518
 
3519
					}#for end
3520
 
3521
				#跳出switch
3522
				break;
3523
 
3524
			}#switch end
3525
 
3526
		#*/
3527
 
3528
		#執行到這邊代表執行正常
3529
		$result["status"]="true";
3530
 
3531
		#回傳結果
3532
		return $result;
3533
 
3534
		}#function arrangeTwoDmensionArray end
3535
 
3536
	/*
3537
	#函式說明:
3538
	#將一陣列數值內容加上前置與後置字串
3539
	#回傳結果:
3540
	#$result["status"],執行正常與否,"true"代表執行正常,"false"代表執行不正常.
3541
	#$result["error"],錯誤訊息陣列.
3542
	#$result["function"],當前執行的函數名稱.
3543
	#$result["content"],加上前置與後置字串後的一維陣列
3544
	#必填參數:
3545
	#$conf["inputArray"],一維陣列變數,要增加前置與後置字串的陣列變數.
3546
	$conf["inputArray"]=array();
3547
	#$conf["headStr"],字串,$conf["inputArray"]中每個元素數值內容的前面都要加上的字串.
3548
	$conf["headStr"]="";
3549
	#$conf["tailStr"],字串,$conf["inputArray"]中每個元素數值內容的後面都要加上的字串.
3550
	$conf["tailStr"]="";
3551
	#可省略參數:
3552
	#無.
3553
	#參考資料:
3554
	#無.
3555
	#備註:
3556
	#無.
3557
	*/
3558
	public static function addStrToHeadAndTail(&$conf){
3559
 
3560
		#初始化要回傳的變數
3561
		$result=array();
3562
 
3563
		#初始化當前執行的函數名稱
3564
		$result["funciton"]=__FUNCTION__;
3565
 
3566
		#如果 $conf 不為陣列
3567
		if(gettype($conf)!="array"){
3568
 
3569
			#設置執行失敗
3570
			$result["status"]="false";
3571
 
3572
			#設置執行錯誤訊息
3573
			$result["error"][]="\$conf變數須為陣列形態";
3574
 
3575
			#如果傳入的參數為 null
3576
			if($conf==null){
3577
 
3578
				#設置執行錯誤訊息
3579
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3580
 
3581
				}#if end
3582
 
3583
			#回傳結果
3584
			return $result;
3585
 
3586
			}#if end
3587
 
3588
		#檢查參數
3589
		#函式說明:
3590
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3591
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3592
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3593
		#$result["function"],當前執行的函式名稱.
3594
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3595
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3596
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3597
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3598
		#必填寫的參數:
3599
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3600
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3601
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3602
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray","headStr","tailStr");
3603
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3604
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","string","string");
3605
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3606
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3607
		#可以省略的參數:
3608
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
3609
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
3610
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3611
		#$conf["skipableVariableName"]=array();
3612
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3613
		#$conf["skipableVariableType"]=array();
3614
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3615
		#$conf["skipableVarDefaultValue"]=array("");
3616
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3617
		#$conf["arrayCountEqualCheck"][]=array();
3618
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3619
		unset($conf["variableCheck::checkArguments"]);
3620
 
3621
		#如果檢查變數失敗
3622
		if($checkArguments["status"]=="false"){
3623
 
3624
			#設置執行不正常
3625
			$result["status"]="false";
3626
 
3627
			#設置執行錯誤
3628
			$result["error"]=$checkArguments;
3629
 
3630
			#回傳結果
3631
			return $result;
3632
 
3633
			}#if end
3634
 
3635
		#如果檢查變數失敗
3636
		if($checkArguments["passed"]=="false"){
3637
 
3638
			#設置執行不正常
3639
			$result["status"]="false";
3640
 
3641
			#設置執行錯誤
3642
			$result["error"]=$checkArguments;
3643
 
3644
			#回傳結果
3645
			return $result;
3646
 
3647
			}#if end
3648
 
3649
		#初始化要回傳一維陣列變數
3650
		$result["content"]=array();
3651
 
3652
		#有幾個元素就執行幾次迴圈
3653
		foreach($conf["inputArray"] as $key => $value){
3654
 
3655
			#合成新元素
3656
			$result["content"][$key]=$conf["headStr"].$value.$conf["tailStr"];
3657
 
3658
			}#for end
3659
 
3660
		#設置執行正常
3661
		$result["status"]="true";
3662
 
3663
		#回傳結果
3664
		return $result;
3665
 
3666
		}#function addStrToHeadAndTail end
3667
 
3668
	/*
3669
	#函式說明:
3670
	#將陣列字串處理成一個個"[index] 元素內容"的格式,且[index]的寬度會依造陣列的長度而固定。
3671
	#回傳結果:
3672
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3673
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
3674
	#$result["function"],當前執行的函式名稱.
3675
	#$result["content"],處理好的陣列.
3676
	#必填參數:
3677
	#$conf["inputArray"],陣列字串,要轉換陣列.
3678
	$conf["inputArray"]=array();
3679
	#可省略參數:
3680
	#$conf["newLine"],字串,組合的內容是否要加換行符號,"true"代表要,"false"代表不要,預設為"ture".
3681
	#$conf["newLine"]="false";
3682
	#$conf["print"],字串,是否要直接印出來,"true"代表要,"false"代表不要,預設為"false".
3683
	#$conf["print"]="ture";
3684
	#參考資料:
3685
	#無.
3686
	#備註:
3687
	#無.
3688
	*/
3689
	public static function toPrintableIndex(&$conf){
3690
 
3691
		#初始化要回傳的結果
3692
		$result=array();
3693
 
3694
		#取得當前執行的函數名稱
3695
		$result["function"]=__FUNCTION__;
3696
 
3697
		#如果沒有參數
3698
		if(func_num_args()==0){
3699
 
3700
			#設置執行失敗
3701
			$result["status"]="false";
3702
 
3703
			#設置執行錯誤訊息
3704
			$result["error"]="函數".$result["function"]."需要參數";
3705
 
3706
			#回傳結果
3707
			return $result;
3708
 
3709
			}#if end
3710
 
3711
		#取得參數
3712
		$result["argu"]=$conf;
3713
 
3714
		#如果 $conf 不為陣列
3715
		if(gettype($conf)!=="array"){
3716
 
3717
			#設置執行失敗
3718
			$result["status"]="false";
3719
 
3720
			#設置執行錯誤訊息
3721
			$result["error"][]="\$conf變數須為陣列形態";
3722
 
3723
			#如果傳入的參數為 null
3724
			if($conf===null){
3725
 
3726
				#設置執行錯誤訊息
3727
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3728
 
3729
				}#if end
3730
 
3731
			#回傳結果
3732
			return $result;
3733
 
3734
			}#if end
3735
 
3736
		#檢查參數
3737
		#函式說明:
3738
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3739
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3740
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3741
		#$result["function"],當前執行的函式名稱.
3742
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3743
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3744
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3745
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
3746
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
3747
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
3748
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
3749
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
3750
		#必填寫的參數:
3751
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3752
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3753
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3754
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3755
		#可以省略的參數:
3756
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3757
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
3758
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
3759
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
3760
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
3761
		#$conf["canBeEmptyString"]="false";
3762
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
3763
		#$conf["canNotBeEmpty"]=array();
3764
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
3765
		#$conf["canBeEmpty"]=array();
3766
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
3767
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("newLine","print");
3768
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3769
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("newLine","print");
3770
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3771
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
3772
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3773
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true","false");
3774
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
3775
		#$conf["disallowAllSkipableVarIsEmpty"]="";
3776
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
3777
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
3778
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3779
		#$conf["arrayCountEqualCheck"][]=array();
3780
		#參考資料來源:
3781
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3782
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3783
		unset($conf["variableCheck::checkArguments"]);
3784
 
3785
		#如果檢查參數失敗
3786
		if($checkArguments["status"]==="false"){
3787
 
3788
			#設置錯誤訊息
3789
			$result["error"]=$checkArguments;
3790
 
3791
			#設置執行失敗
3792
			$result["status"]="false";
3793
 
3794
			#回傳結果
3795
			return $result;
3796
 
3797
			}#if end
3798
 
3799
		#如果檢查不通過
3800
		if($checkArguments["passed"]==="false"){
3801
 
3802
			#設置錯誤訊息
3803
			$result["error"]=$checkArguments;
3804
 
3805
			#設置執行失敗
3806
			$result["status"]="false";
3807
 
3808
			#回傳結果
3809
			return $result;
3810
 
3811
			}#if end
3812
 
3813
		#取得陣列計數長度
3814
		$arrayCountLen=strlen(count($conf["inputArray"]));
3815
 
3816
		#初始化換行符號
3817
		$newLine="\n";
3818
 
3819
		#如果不要換行符號
3820
		if($conf["newLine"]==="false"){
3821
 
3822
			#設置為空字串
3823
			$newLine="";
3824
 
3825
			}#if end
3826
 
3827
		#針對每個要處理的陣列
3828
		foreach($conf["inputArray"] as $key=>$val){
3829
 
3830
			#如果列數長度加3小於要移除檔案之計數長度
3831
			while(strlen($key)<$arrayCountLen){
3832
 
3833
				#在前面加上空格
3834
				$key=" ".$key;
3835
 
3836
				}#if end
3837
 
3838
			#組合內容
3839
			$result["content"][]="[".$key."] ".$val.$newLine;
3840
 
3841
			#如果要印出來
3842
			if($conf["print"]==="true"){
3843
 
3844
				#印出來
3845
				echo "[".$key."] ".$val.$newLine;
3846
 
3847
				}#if end
3848
 
3849
			}#foreach end
3850
 
3851
		#設置執行正常
3852
		$result["status"]="true";
3853
 
3854
		#回傳結果
3855
		return $result;
3856
 
3857
		}#function toPrintableIndex end
3858
 
3859
	/*
3860
	#函式說明:
3861
	#將陣列進行切割
3862
	#回傳結果:
3863
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3864
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
3865
	#$result["function"],當前執行的函式名稱.
3866
	#$result["content"]["get"],切割出來的陣列.
3867
	#$result["content"]["leftL"],遺留下來的陣列,左邊.
3868
	#$result["content"]["leftR"],遺留下來的陣列,右邊.
3869
	#$result["content"]["ori"],原始的陣列.
3870
	#$result["argu"],使用的參數.
3871
	#必填參數:
3872
	#$conf["array"],要進行分割的陣列.
3873
	$conf["array"]=array();
3874
	#$conf["length"],整數,要切幾個元素.
3875
	$conf["length"]=;
3876
	#可省略參數:
3877
	#$conf["offset"],整數,要從第幾個元素開始切,預設為0
3878
	#$conf["offset"]=0;
3879
	#參考資料:
3880
	#無.
3881
	#備註:
3882
	#無.
3883
	*/
3884
	public static function split(&$conf){
3885
 
3886
		#初始化要回傳的結果
3887
		$result=array();
3888
 
3889
		#取得當前執行的函數名稱
3890
		$result["function"]=__FUNCTION__;
3891
 
3892
		#如果沒有參數
3893
		if(func_num_args()==0){
3894
 
3895
			#設置執行失敗
3896
			$result["status"]="false";
3897
 
3898
			#設置執行錯誤訊息
3899
			$result["error"]="函數".$result["function"]."需要參數";
3900
 
3901
			#回傳結果
3902
			return $result;
3903
 
3904
			}#if end
3905
 
3906
		#取得參數
3907
		$result["argu"]=$conf;
3908
 
3909
		#如果 $conf 不為陣列
3910
		if(gettype($conf)!=="array"){
3911
 
3912
			#設置執行失敗
3913
			$result["status"]="false";
3914
 
3915
			#設置執行錯誤訊息
3916
			$result["error"][]="\$conf變數須為陣列形態";
3917
 
3918
			#如果傳入的參數為 null
3919
			if($conf===null){
3920
 
3921
				#設置執行錯誤訊息
3922
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3923
 
3924
				}#if end
3925
 
3926
			#回傳結果
3927
			return $result;
3928
 
3929
			}#if end
3930
 
3931
		#檢查參數
3932
		#函式說明:
3933
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3934
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3935
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3936
		#$result["function"],當前執行的函式名稱.
3937
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3938
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3939
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3940
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
3941
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
3942
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
3943
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
3944
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
3945
		#必填寫的參數:
3946
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3947
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3948
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3949
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3950
		#可以省略的參數:
3951
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3952
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("array","length");
3953
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
3954
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","integer");
3955
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
3956
		#$conf["canBeEmptyString"]="false";
3957
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
3958
		#$conf["canNotBeEmpty"]=array();
3959
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
3960
		#$conf["canBeEmpty"]=array();
3961
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
3962
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("offset");
3963
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3964
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("offset");
3965
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3966
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("integer");
3967
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3968
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(0);
3969
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
3970
		#$conf["disallowAllSkipableVarIsEmpty"]="";
3971
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
3972
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
3973
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3974
		#$conf["arrayCountEqualCheck"][]=array();
3975
		#參考資料來源:
3976
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3977
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3978
		unset($conf["variableCheck::checkArguments"]);
3979
 
3980
		#如果檢查參數失敗
3981
		if($checkArguments["status"]==="false"){
3982
 
3983
			#設置錯誤訊息
3984
			$result["error"]=$checkArguments;
3985
 
3986
			#設置執行失敗
3987
			$result["status"]="false";
3988
 
3989
			#回傳結果
3990
			return $result;
3991
 
3992
			}#if end
3993
 
3994
		#如果檢查不通過
3995
		if($checkArguments["passed"]==="false"){
3996
 
3997
			#設置錯誤訊息
3998
			$result["error"]=$checkArguments;
3999
 
4000
			#設置執行失敗
4001
			$result["status"]="false";
4002
 
4003
			#回傳結果
4004
			return $result;
4005
 
4006
			}#if end
4007
 
4008
		#初始化要回傳的結果
4009
		$result["content"]=array();
4010
 
4011
		#初始化儲存切割出來的陣列內容
4012
		$result["content"]["get"]=array();
4013
 
4014
		#初始化儲存剩下來的左方陣列
4015
		$result["content"]["leftL"]=array();
4016
 
4017
		#初始化儲存剩下來的右方陣列
4018
		$result["content"]["leftR"]=array();
4019
 
4020
		#設置原始的陣列
4021
		$result["content"]["ori"]=$conf["array"];
4022
 
4023
		#計數
4024
		$count=-1;
4025
 
4026
		#針對每個元素
4027
		foreach($conf["array"] as $key=>$val){
4028
 
4029
			#計數加0
4030
			++$count;
4031
 
4032
			#如果是開始要切割的位置
4033
			if($conf["offset"]<=$count){
4034
 
4035
				#如果切出的長度還不足
4036
				if($conf["length"]>count($result["content"]["get"])){
4037
 
4038
					#儲存切割出來的元素
4039
					$result["content"]["get"][]=$val;				
4040
 
4041
					}#if end
4042
 
4043
				#反之切割出來的長度已經足夠了
4044
				else{
4045
 
4046
					#儲存剩下來的右方陣列
4047
					$result["content"]["leftR"][]=$val;
4048
 
4049
					}#else end
4050
 
4051
				}#if end
4052
 
4053
			#反之沒到要切割的位置
4054
			else{
4055
 
4056
				#儲存剩下來的右方陣列
4057
				$result["content"]["leftL"][]=$val;
4058
 
4059
				}#else end
4060
 
4061
			}#foreach end
4062
 
4063
		#設置執行正常
4064
		$result["status"]="true";
4065
 
4066
		#回傳結果
4067
		return $result;
4068
 
4069
		}#function split end
4070
 
4071
	/*
4072
	#函式說明:
4073
	#將既有的一維陣列變成二維陣列,新增指定或相同的欄位資訊.
4074
	#回傳結果:
4075
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4076
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
4077
	#$result["function"],當前執行的函式名稱.
4078
	#$result["content"],合併好的2維陣列.
4079
	#$result["argu"],使用的參數.
4080
	#必填參數:
4081
	#$conf["array"],陣列,要進行合併的一維陣列.
4082
	$conf["array"]=array();
4083
	#$conf["newArray"],陣列,要新增的欄位陣列,若資料筆數不等同於count($conf["array"]),則代表產生相同的欄位元素.
4084
	$conf["newArray"]=array();
4085
	#可省略參數:
4086
	#無.
4087
	#參考資料:
4088
	#無.
4089
	#備註:
4090
	#無.
4091
	*/
4092
	public static function addColumn(&$conf){
4093
 
4094
		#初始化要回傳的結果
4095
		$result=array();
4096
 
4097
		#取得當前執行的函數名稱
4098
		$result["function"]=__FUNCTION__;
4099
 
4100
		#如果沒有參數
4101
		if(func_num_args()==0){
4102
 
4103
			#設置執行失敗
4104
			$result["status"]="false";
4105
 
4106
			#設置執行錯誤訊息
4107
			$result["error"]="函數".$result["function"]."需要參數";
4108
 
4109
			#回傳結果
4110
			return $result;
4111
 
4112
			}#if end
4113
 
4114
		#取得參數
4115
		$result["argu"]=$conf;
4116
 
4117
		#如果 $conf 不為陣列
4118
		if(gettype($conf)!=="array"){
4119
 
4120
			#設置執行失敗
4121
			$result["status"]="false";
4122
 
4123
			#設置執行錯誤訊息
4124
			$result["error"][]="\$conf變數須為陣列形態";
4125
 
4126
			#如果傳入的參數為 null
4127
			if($conf===null){
4128
 
4129
				#設置執行錯誤訊息
4130
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4131
 
4132
				}#if end
4133
 
4134
			#回傳結果
4135
			return $result;
4136
 
4137
			}#if end
4138
 
4139
		#檢查參數
4140
		#函式說明:
4141
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4142
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4143
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4144
		#$result["function"],當前執行的函式名稱.
4145
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4146
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4147
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4148
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4149
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4150
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4151
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4152
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4153
		#必填寫的參數:
4154
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4155
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4156
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4157
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4158
		#可以省略的參數:
4159
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4160
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("array","newArray");
4161
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4162
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
4163
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4164
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4165
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4166
		#$conf["canNotBeEmpty"]=array();
4167
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4168
		#$conf["canBeEmpty"]=array();
4169
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4170
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("offset");
4171
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4172
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("offset");
4173
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4174
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("integer");
4175
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4176
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(0);
4177
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4178
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4179
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4180
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4181
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4182
		#$conf["arrayCountEqualCheck"][]=array();
4183
		#參考資料來源:
4184
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4185
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4186
		unset($conf["variableCheck::checkArguments"]);
4187
 
4188
		#如果檢查參數失敗
4189
		if($checkArguments["status"]==="false"){
4190
 
4191
			#設置錯誤訊息
4192
			$result["error"]=$checkArguments;
4193
 
4194
			#設置執行失敗
4195
			$result["status"]="false";
4196
 
4197
			#回傳結果
4198
			return $result;
4199
 
4200
			}#if end
4201
 
4202
		#如果檢查不通過
4203
		if($checkArguments["passed"]==="false"){
4204
 
4205
			#設置錯誤訊息
4206
			$result["error"]=$checkArguments;
4207
 
4208
			#設置執行失敗
4209
			$result["status"]="false";
4210
 
4211
			#回傳結果
4212
			return $result;
4213
 
4214
			}#if end
4215
 
4216
		#初始化要回傳的二維陣列內容
4217
		$result["content"]=array(array());
4218
 
4219
		#針對每個要處理的既有一維陣列變數
4220
		foreach($conf["array"] as $index => $firstEle){
4221
 
4222
			#如果存在新的欄位指定內容
4223
			if(isset($conf["newArray"][$index]))
4224
			{
4225
				#設置新的欄位內容
4226
				$secondEle=$conf["newArray"][$index];
4227
			}
4228
 
4229
			#反之
4230
			else
4231
			{
4232
				#設置新的欄位內容為第一個新的元素
4233
				$secondEle=$conf["newArray"][0];
4234
			}
4235
 
4236
			#設置新的欄位內容
4237
			$row=array($firstEle,$secondEle);
4238
 
4239
			#儲存新的欄位內容
4240
			$result["content"][]=$row;
4241
 
4242
			}#foreach end
4243
 
4244
		#設置執行正常
4245
		$result["status"]="true";
4246
 
4247
		#回傳結果
4248
		return $result;
4249
 
4250
		}#function addColumn end
4251
 
4252
	}#end arrays class
4253
 
4254
?>