Subversion Repositories php-qbpwcf

Rev

Rev 62 | Rev 239 | Go to most recent revision | Details | Compare with Previous | 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.
226 liveuser 6
    Copyright (C) 2014~2025 MIN ZHI, CHEN
3 liveuser 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){
226 liveuser 752
 
3 liveuser 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
226 liveuser 780
 
3 liveuser 781
		#取得參數
782
		$result["argu"]=$conf;
226 liveuser 783
 
3 liveuser 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();
226 liveuser 818
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 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"]);
226 liveuser 830
 
3 liveuser 831
		#如果檢查參數失敗
832
		if($checkArguments["status"]==="false"){
226 liveuser 833
 
3 liveuser 834
			#設置執行失敗
835
			$result["status"]="false";
226 liveuser 836
 
3 liveuser 837
			#設置執行錯誤訊息
838
			$result["error"]=$checkArguments;
226 liveuser 839
 
3 liveuser 840
			#回傳結果
841
			return $result;
226 liveuser 842
 
3 liveuser 843
			}#if end
226 liveuser 844
 
3 liveuser 845
		#如果參數檢查不過
846
		if($checkArguments["passed"]==="false"){
226 liveuser 847
 
3 liveuser 848
			#設置執行失敗
849
			$result["status"]="false";
226 liveuser 850
 
3 liveuser 851
			#設置執行錯誤訊息
852
			$result["error"]=$checkArguments;
226 liveuser 853
 
3 liveuser 854
			#回傳結果
855
			return $result;
226 liveuser 856
 
3 liveuser 857
			}#if end
226 liveuser 858
 
3 liveuser 859
		#剔除掉特定元素的陣列,使用原來陣列的key來儲存.
860
		$result["content"]["byName"]=array();
226 liveuser 861
 
3 liveuser 862
		#剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
863
		$result["content"]["byNumber"]=array();
226 liveuser 864
 
3 liveuser 865
		#如果arrayB沒有內容
866
		if(count($conf["arrayB"])===0){
226 liveuser 867
 
3 liveuser 868
			#直接將arrayA的內容放進去
869
			$result["content"]["byName"]=$conf["arrayA"];
226 liveuser 870
 
3 liveuser 871
			#針對每隔陣列a
872
			foreach($conf["arrayA"] as $val){
226 liveuser 873
 
3 liveuser 874
				$result["content"]["byNumber"][]=$val;
226 liveuser 875
 
3 liveuser 876
				}
226 liveuser 877
 
3 liveuser 878
			}#if end
226 liveuser 879
 
3 liveuser 880
		else{
881
			#針對 $conf["arrayA"] 的每個元素
882
			foreach($conf["arrayA"] as $aAk => $aAv){
226 liveuser 883
 
3 liveuser 884
				#針對 $conf["arrayB"] 的每個元素
885
				foreach($conf["arrayB"] as $aBk => $aBv){
226 liveuser 886
 
3 liveuser 887
					/*
888
					#debug
889
					echo "\$aAV:".$aAv.PHP_EOL;
890
					echo "\$aBV:".$aBv.PHP_EOL;
891
					echo "(\$aAv===\$aBv):".($aAv===$aBv).PHP_EOL;
892
					*/
226 liveuser 893
 
3 liveuser 894
					#如果arrayA的元素數值存在於陣列arrayB
895
					if($aAv===$aBv){
226 liveuser 896
 
3 liveuser 897
						/*
898
						#debug
899
						echo "(\$aAv===\$aBv):".($aAv===$aBv).PHP_EOL;
900
						*/
226 liveuser 901
 
3 liveuser 902
						#移除重複的元素
903
						#unset($conf["arrayA"][$aAk]);
904
						#unset($conf["arrayB"][$aBk]);
226 liveuser 905
 
3 liveuser 906
						/*
907
						#debug
908
						echo $aAv." repeated, ignore it.".PHP_EOL;
909
						*/
226 liveuser 910
 
3 liveuser 911
						#跳過
912
						continue 2;
226 liveuser 913
 
3 liveuser 914
						}#if end
226 liveuser 915
 
3 liveuser 916
					/*
917
					#debug
918
					echo "(\$aAv!==\$aBv):".($aAv!==$aBv).PHP_EOL;
919
					echo "add ".$aAv." ".PHP_EOL;
920
					*/
226 liveuser 921
 
3 liveuser 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"])]){
226 liveuser 926
 
3 liveuser 927
						/*
928
						#debug
929
						echo "not last, continue...".PHP_EOL;
930
						*/
226 liveuser 931
 
3 liveuser 932
						#繼續比
933
						continue;
226 liveuser 934
 
935
						}#if end
936
 
3 liveuser 937
					#以key取得未重複的元素
226 liveuser 938
					$result["content"]["byName"][$aAk]=$aAv;
939
 
3 liveuser 940
					#如果IP未重複
941
					if(!in_array($aAv,$result["content"]["byNumber"])){
226 liveuser 942
 
3 liveuser 943
						#重新排列未重複的元素
944
						$result["content"]["byNumber"][]=$aAv;
226 liveuser 945
 
3 liveuser 946
						}#if end
226 liveuser 947
 
3 liveuser 948
					}#foreach end
226 liveuser 949
 
3 liveuser 950
				}#foreach end
226 liveuser 951
 
3 liveuser 952
			}#else end
226 liveuser 953
 
3 liveuser 954
		#設置有剩下未重複的元素
226 liveuser 955
		$result["empty"]="false";
956
 
3 liveuser 957
		#如果沒有剩下未重複的元素
958
		if($result["content"]["byName"]===array()){
226 liveuser 959
 
3 liveuser 960
			#設置沒有剩下未重複的元素
961
			$result["empty"]="true";
226 liveuser 962
 
3 liveuser 963
			}#if end
226 liveuser 964
 
3 liveuser 965
		#設置執行正常
966
		$result["status"]="true";
226 liveuser 967
 
3 liveuser 968
		#回傳結果
969
		return $result;
226 liveuser 970
 
3 liveuser 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
226 liveuser 1669
 
3 liveuser 1670
		#針對要合併的每組一維陣列
1671
		foreach($conf["inputArray"] as $array){
1672
 
48 liveuser 1673
			#如果要合併的元素不是陣列
1674
			if(gettype($array)!=="array"){
226 liveuser 1675
 
48 liveuser 1676
				#設置執行失敗
1677
				$result["status"]="false";
1678
 
1679
				#設置錯誤訊息
1680
				$result["error"]=$checkArguments;
1681
 
1682
				#回傳結果
1683
				return $result;
226 liveuser 1684
 
48 liveuser 1685
				}#if end
1686
 
3 liveuser 1687
			#針對該陣列中的每個元素
1688
			foreach($array as $arrayAdded){
1689
 
1690
				#如果不允許重複的內容
1691
				if($conf["allowRepeat"]==="false"){
226 liveuser 1692
 
3 liveuser 1693
					#如果要寬鬆的視為相異
1694
					if($conf["looseDiff"]==="true"){
226 liveuser 1695
 
3 liveuser 1696
						#如果有重複了
1697
						if(in_array($arrayAdded,$result["content"])){
226 liveuser 1698
 
3 liveuser 1699
							#跳到下一個
1700
							continue;
226 liveuser 1701
 
3 liveuser 1702
							}#if end
226 liveuser 1703
 
3 liveuser 1704
						}#if end
226 liveuser 1705
 
3 liveuser 1706
					#反之,代表不能寬鬆的認為相異
1707
					else{
226 liveuser 1708
 
3 liveuser 1709
						#針對每個既有的元素
1710
						foreach($result["content"] as $key=>$val){
226 liveuser 1711
 
3 liveuser 1712
							#取得元素的參考
1713
							$valExist=&$val;
226 liveuser 1714
 
3 liveuser 1715
							#取得要檢查是否重複的元素
1716
							$valAdded=&$arrayAdded;
226 liveuser 1717
 
3 liveuser 1718
							#如果既有元素跟要檢查是否重複的元素均是陣列
1719
							if( (gettype($valExist)==="array") && (gettype($valAdded)==="array") ){
226 liveuser 1720
 
3 liveuser 1721
								#預設不知道是否有差異
1722
								$varExistAndValAddedIsDiff="?";
226 liveuser 1723
 
3 liveuser 1724
								#針對每個已存在元素
1725
								foreach($valExist as $veKey => $veVal){
226 liveuser 1726
 
3 liveuser 1727
									#若存在 key 相同的地方
1728
									if(isset($valAdded[$veKey])){
226 liveuser 1729
 
3 liveuser 1730
										#如果 $veVal 跟 $valAdded[$veKey] 兩者都是陣列
1731
										if( gettype($veVal)==="array" && gettype($valAdded[$veKey])==="array" ){
226 liveuser 1732
 
3 liveuser 1733
											#用來判斷是否 陣列 $veVal 跟 $valAdded[$veKey] 有相異的元素數量
1734
											$sameCount=count($veVal);
226 liveuser 1735
 
3 liveuser 1736
											#如果 陣列 $valAdded 的元素數量比較多
1737
											if($sameCount<count($valAdded[$veKey])){
226 liveuser 1738
 
3 liveuser 1739
												#更新 用來判斷是否 陣列 $veVal 跟 $valAdded[$veKey] 有相異的元素數量
1740
												$sameCount=count($valAdded[$veKey]);
226 liveuser 1741
 
3 liveuser 1742
												}#if end
226 liveuser 1743
 
3 liveuser 1744
											#遞回處理
1745
											#函式說明:
1746
											#將多個一維陣列串聯起來,key從0開始排序.
1747
											#回傳的結果:
1748
											#$result["status"],"true"表執行正常,"false"代表執行不正常.
1749
											#$result["error"],錯誤訊息陣列.
1750
											#$result["function"],當前執行的函數.
1751
											#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1752
											#$result["content"],合併好的一維陣列.
1753
											#必填參數
1754
											#$conf["inputArray"],陣列,要合併的一維陣列變數,例如:=array($array1,$array2);
1755
											$conf["arrays::mergeArray"]["inputArray"]=array($veVal,$valAdded[$veKey]);
1756
											#可省略參數:
1757
											#$conf["allowRepeat"],字串,預設為"true",允許重複的結果;若為"false"則不會出現重複的元素內容.
1758
											$conf["arrays::mergeArray"]["allowRepeat"]=$conf["allowRepeat"];
1759
											#$conf["looseDiff"],字串,預設為"false",代表要嚴謹判斷為有相異,例如陣列中元素的key順序不同(整數)就代表有相異;反之為"true",例如陣列中元素的key順序不同(整數),但value有相對應且相同.
1760
											$conf["arrays::mergeArray"]["looseDiff"]=$conf["looseDiff"];
1761
											#參考資料:
1762
											#無.
1763
											#備註:
1764
											#無.
1765
											$mergeArray=arrays::mergeArray($conf["arrays::mergeArray"]);
1766
											unset($conf["arrays::mergeArray"]);
226 liveuser 1767
 
3 liveuser 1768
											#如果執行失敗
1769
											if($mergeArray["status"]==="false"){
226 liveuser 1770
 
3 liveuser 1771
												#設置執行失敗
1772
												$result["status"]="false";
1773
 
1774
												#設置錯誤訊息
1775
												$result["error"]=$mergeArray;
1776
 
1777
												#回傳結果
1778
												return $result;
226 liveuser 1779
 
3 liveuser 1780
												}#if end
226 liveuser 1781
 
3 liveuser 1782
											#如果 合併好元素數量大於 陣列 $veVal 跟 $valAdded[$veKey] 有相異的元素數量
1783
											if( count($mergeArray["content"]) > $sameCount ){
226 liveuser 1784
 
3 liveuser 1785
												#代表 $veVal 跟 $valAdded[$veKey] 是有差異的陣列
226 liveuser 1786
 
3 liveuser 1787
												#設置有相異
1788
												$varExistAndValAddedIsDiff="true";
226 liveuser 1789
 
3 liveuser 1790
												#跳出 foreach
1791
												break;
226 liveuser 1792
 
1793
												}#if end
1794
 
3 liveuser 1795
											}#if end
226 liveuser 1796
 
3 liveuser 1797
										#反之
1798
										else{
226 liveuser 1799
 
3 liveuser 1800
											#若 key 相同的地方,其 val 有相異
1801
											if($veVal!==$valAdded[$veKey]){
226 liveuser 1802
 
3 liveuser 1803
												#設置有相異
1804
												$varExistAndValAddedIsDiff="true";
226 liveuser 1805
 
3 liveuser 1806
												#跳出 foreach
1807
												break;
226 liveuser 1808
 
3 liveuser 1809
												}#if end
226 liveuser 1810
 
3 liveuser 1811
											}#else end
226 liveuser 1812
 
3 liveuser 1813
										}#if end
226 liveuser 1814
 
3 liveuser 1815
									#反之沒有  key 相同的地方
1816
									else{
226 liveuser 1817
 
3 liveuser 1818
										#設置有相異
1819
										$varExistAndValAddedIsDiff="true";
226 liveuser 1820
 
3 liveuser 1821
										#跳出 foreach
1822
										break;
226 liveuser 1823
 
3 liveuser 1824
										}#else end
226 liveuser 1825
 
3 liveuser 1826
									}#foreach end
226 liveuser 1827
 
3 liveuser 1828
								#如果沒有找到有相異的
1829
								if($varExistAndValAddedIsDiff==="?"){
226 liveuser 1830
 
3 liveuser 1831
									#設置無相異
1832
									$varExistAndValAddedIsDiff="false";
226 liveuser 1833
 
3 liveuser 1834
									}#if end
226 liveuser 1835
 
3 liveuser 1836
								#如果無相異
1837
								if($varExistAndValAddedIsDiff==="false"){
226 liveuser 1838
 
3 liveuser 1839
									#跳到下一個
1840
									continue 3 ;
226 liveuser 1841
 
3 liveuser 1842
									}#if end
226 liveuser 1843
 
3 liveuser 1844
								}#if end
226 liveuser 1845
 
3 liveuser 1846
							#反之不是都為陣列,
1847
							else{
226 liveuser 1848
 
3 liveuser 1849
								#若為同形態,且數值相同
1850
								if($valExist===$valAdded){
226 liveuser 1851
 
3 liveuser 1852
									#跳到下一個
1853
									continue 2;
226 liveuser 1854
 
3 liveuser 1855
									}#if end
226 liveuser 1856
 
3 liveuser 1857
								}#else end
226 liveuser 1858
 
3 liveuser 1859
							}#foreach end
226 liveuser 1860
 
3 liveuser 1861
						#執行到這邊代表既有的元素與要新增的元素是相異的
226 liveuser 1862
 
3 liveuser 1863
						#將之合併到 $result 陣列裡面
1864
						$result["content"][]=$arrayAdded;
226 liveuser 1865
 
3 liveuser 1866
						}#else end
226 liveuser 1867
 
3 liveuser 1868
					}#if end
1869
 
1870
				#反之
1871
				else{
1872
 
1873
					#將之合併到 $result 陣列裡面
1874
					$result["content"][]=$arrayAdded;
1875
 
226 liveuser 1876
					}#else end
3 liveuser 1877
 
1878
				}#foreach end
1879
 
1880
			}#foreach end
1881
 
1882
		#設置執行正常
1883
		$result["status"]="true";
1884
 
1885
		#回傳結果
1886
		return $result;
1887
 
1888
		}#function mergeArray end
1889
 
1890
	/*
1891
	#函式說明:
1892
	#將陣列中重複的元素剔除
1893
	#回傳的結果:
1894
	#$result["status"],"true"表執行正常,"false"代表執行不正常.
1895
	#$result["error"],錯誤訊息陣列.
1896
	#$result["function"],當前執行的函數.
1897
	#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1898
	#$result["content"],合併好的陣列.
1899
	#必填參數
1900
	#$conf["inputArray"],陣列,要合併的陣列變數.
1901
	$conf["inputArray"]=array();
1902
	#可省略參數:
1903
	#無.
1904
	#參考資料:
1905
	#無.
1906
	#備註:
1907
	#無.
1908
	*/
1909
	public static function unique(&$conf){
226 liveuser 1910
 
3 liveuser 1911
		#初始化要回傳的結果
1912
		$result=array();
1913
 
1914
		#初始話要回傳的陣列
1915
		$result["content"]=array();
1916
 
1917
		#取得當前執行的涵式
1918
		$result["function"]=__FUNCTION__;
1919
 
1920
		#如果 $conf 不為陣列
1921
		if(gettype($conf)!="array"){
1922
 
1923
			#設置執行失敗
1924
			$result["status"]="false";
1925
 
1926
			#設置執行錯誤訊息
1927
			$result["error"][]="\$conf變數須為陣列形態";
1928
 
1929
			#如果傳入的參數為 null
1930
			if($conf==null){
1931
 
1932
				#設置執行錯誤訊息
1933
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1934
 
1935
				}#if end
1936
 
1937
			#回傳結果
1938
			return $result;
1939
 
1940
			}#if end
1941
 
1942
		#取得參數
1943
		$result["argu"]=$conf;
1944
 
1945
		#檢查參數
1946
		#函式說明:
1947
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1948
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1949
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1950
		#$result["function"],當前執行的函式名稱.
1951
		#$result["argu"],設置給予的參數.
1952
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1953
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1954
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1955
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
1956
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
1957
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1958
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
1959
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
1960
		#必填寫的參數:
1961
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1962
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1963
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1964
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1965
		#可以省略的參數:
1966
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1967
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
1968
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
1969
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
1970
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
1971
		#$conf["canBeEmptyString"]="false";
1972
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
1973
		#$conf["canNotBeEmpty"]=array();
1974
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
1975
		#$conf["canBeEmpty"]=array();
1976
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
1977
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("logPath");
1978
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1979
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("allowRepeat","looseDiff");
1980
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1981
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
1982
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1983
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true","false");
1984
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
1985
		#$conf["disallowAllSkipableVarIsEmpty"]="";
1986
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
1987
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
1988
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1989
		#$conf["arrayCountEqualCheck"][]=array();
1990
		#參考資料來源:
1991
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1992
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1993
		unset($conf["variableCheck::checkArguments"]);
1994
 
1995
		#如果檢查參數失敗
1996
		if($checkArguments["status"]==="false"){
1997
 
1998
			#設置執行失敗
1999
			$result["status"]="false";
2000
 
2001
			#設置錯誤訊息
2002
			$result["error"]=$checkArguments;
2003
 
2004
			#回傳結果
2005
			return $result;
2006
 
2007
			}#if end
2008
 
2009
		#如果檢查參數失敗
2010
		if($checkArguments["passed"]==="false"){
2011
 
2012
			#設置執行失敗
2013
			$result["status"]="false";
2014
 
2015
			#設置錯誤訊息
2016
			$result["error"]=$checkArguments;
2017
 
2018
			#回傳結果
2019
			return $result;
2020
 
2021
			}#if end
226 liveuser 2022
 
3 liveuser 2023
		#初始化給 arrays::mergeArray 用的 inputArray 參數
2024
		$paramsOfInputArrayOfArraysMergeArray=array();
226 liveuser 2025
 
2026
		#針對每個元素
3 liveuser 2027
		foreach($conf["inputArray"] as $ele){
226 liveuser 2028
 
3 liveuser 2029
			#包成陣列並儲存起來
2030
			$paramsOfInputArrayOfArraysMergeArray[]=array($ele);
226 liveuser 2031
 
3 liveuser 2032
			}#foreach end
226 liveuser 2033
 
3 liveuser 2034
		#函式說明:
2035
		#將多個一維陣列串聯起來,key從0開始排序.
2036
		#回傳的結果:
2037
		#$result["status"],"true"表執行正常,"false"代表執行不正常.
2038
		#$result["error"],錯誤訊息陣列.
2039
		#$result["function"],當前執行的函數.
2040
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2041
		#$result["content"],合併好的一維陣列.
2042
		#必填參數
2043
		#$conf["inputArray"],陣列,要合併的一維陣列變數,例如:=array($array1,$array2);
2044
		$conf["arrays::mergeArray"]["inputArray"]=$paramsOfInputArrayOfArraysMergeArray;
2045
		#可省略參數:
2046
		#$conf["allowRepeat"],字串,預設為"true",允許重複的結果;若為"false"則不會出現重複的元素內容.
2047
		$conf["arrays::mergeArray"]["allowRepeat"]="false";
2048
		#$conf["looseDiff"],字串,預設為"false",代表要嚴謹判斷為有相異,例如陣列中元素的key順序不同(整數)就代表有相異;反之為"true",例如陣列中元素的key順序不同(非整數),但value有相同,則視為無相異.
2049
		#$conf["arrays::mergeArray"]["looseDiff"]="false";
2050
		#參考資料:
2051
		#無.
2052
		#備註:
2053
		#無.
2054
		$mergeArray=arrays::mergeArray($conf["arrays::mergeArray"]);
2055
		unset($conf["arrays::mergeArray"]);
226 liveuser 2056
 
3 liveuser 2057
		#debug
2058
		#var_dump(__LINE__,$mergeArray);
226 liveuser 2059
 
3 liveuser 2060
		#如果執行失敗
2061
		if($mergeArray["status"]==="false"){
2062
 
2063
			#設置執行失敗
2064
			$result["status"]="false";
2065
 
2066
			#設置錯誤訊息
2067
			$result["error"]=$mergeArray;
2068
 
2069
			#回傳結果
2070
			return $result;
2071
 
2072
			}#if end
226 liveuser 2073
 
3 liveuser 2074
		#設置執行後得到的不重複陣列結果
2075
		$result["content"]=$mergeArray["content"];
226 liveuser 2076
 
3 liveuser 2077
		#設置執行正常
2078
		$result["status"]="true";
226 liveuser 2079
 
3 liveuser 2080
		#回傳結果
2081
		return $result;
226 liveuser 2082
 
3 liveuser 2083
		}#function unique end
2084
 
2085
	/*
2086
	#函式說明:
2087
	#將多個多維陣列串聯起來,key從0開始排序.
2088
	#回傳的結果:
2089
	#$result["status"],"true"表執行正常,"false"代表執行不正常.
2090
	#$result["error"],錯誤訊息陣列.
2091
	#$result["function"],當前執行的函數.
2092
	#$result["argu"],使用的參數.
2093
	#$result["content"],合併好的一維陣列.
2094
	#必填參數
2095
	#$conf["inputArray"],陣列,要合併的一維陣列變數,例如:=array($array1,$array2);
2096
	$conf["inputArray"]=array();
2097
	#可省略參數:
2098
	#$conf["allowRepeat"],字串,預設為"false",不允許重複的結果;反之為"true".
2099
	#$conf["allowRepeat"]="true";
2100
	#$conf["equalKeyStruc"],字串陣列,若 allowRepeat 參數為 "false", 這該參數生效.該參數為用來判斷每個陣列的哪個鍵值路徑底下的數值相同時要進行取代,後者會取代前者.
2101
	#$conf["equalKeyStruc"]=array();
2102
	#參考資料:
2103
	#無.
2104
	#備註:
2105
	#無.
2106
	*/
2107
	public static function mergeMultiDimensionArray(&$conf){
226 liveuser 2108
 
3 liveuser 2109
		#初始化要回傳的結果
2110
		$result=array();
2111
 
2112
		#初始話要回傳的陣列
2113
		$result["content"]=array();
2114
 
2115
		#取得當前執行的涵式
2116
		$result["function"]=__FUNCTION__;
2117
 
2118
		#如果 $conf 不為陣列
2119
		if(gettype($conf)!="array"){
2120
 
2121
			#設置執行失敗
2122
			$result["status"]="false";
2123
 
2124
			#設置執行錯誤訊息
2125
			$result["error"][]="\$conf變數須為陣列形態";
2126
 
2127
			#如果傳入的參數為 null
2128
			if($conf==null){
2129
 
2130
				#設置執行錯誤訊息
2131
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2132
 
2133
				}#if end
2134
 
2135
			#回傳結果
2136
			return $result;
2137
 
2138
			}#if end
2139
 
2140
		#儲存使用的參數
2141
		$result["argu"]=$conf;
226 liveuser 2142
 
3 liveuser 2143
		#檢查參數
2144
		#函式說明:
2145
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2146
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2147
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2148
		#$result["function"],當前執行的函式名稱.
2149
		#$result["argu"],設置給予的參數.
2150
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2151
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2152
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2153
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
2154
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
2155
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2156
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
2157
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
2158
		#必填寫的參數:
2159
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2160
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2161
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2162
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2163
		#可以省略的參數:
2164
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2165
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
2166
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
2167
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
2168
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
2169
		#$conf["canBeEmptyString"]="false";
2170
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
2171
		#$conf["canNotBeEmpty"]=array();
2172
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
2173
		#$conf["canBeEmpty"]=array();
2174
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
2175
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("logPath");
2176
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2177
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("allowRepeat","equalKeyStruc");
2178
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2179
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","array");
2180
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2181
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false",null);
2182
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
2183
		#$conf["disallowAllSkipableVarIsEmpty"]="";
2184
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
2185
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
2186
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2187
		#$conf["arrayCountEqualCheck"][]=array();
2188
		#參考資料來源:
2189
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2190
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2191
		unset($conf["variableCheck::checkArguments"]);
2192
 
2193
		#如果檢查參數失敗
2194
		if($checkArguments["status"]==="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
		if($checkArguments["passed"]==="false"){
2209
 
2210
			#設置執行失敗
2211
			$result["status"]="false";
2212
 
2213
			#設置錯誤訊息
2214
			$result["error"]=$checkArguments;
2215
 
2216
			#回傳結果
2217
			return $result;
2218
 
2219
			}#if end
226 liveuser 2220
 
3 liveuser 2221
		#針對每組一維陣列
2222
		foreach($conf["inputArray"] as $array){
2223
 
2224
			#如果是空陣列
2225
			if(empty($array)){
226 liveuser 2226
 
3 liveuser 2227
				#跳過之
2228
				continue;
226 liveuser 2229
 
3 liveuser 2230
				}#if end
2231
 
2232
			#針對該一維陣列中的每個元素
2233
			foreach($array as $arrayAdded){
2234
 
2235
				#如果不允許重複的內容
2236
				if($conf["allowRepeat"]==="false"){
226 liveuser 2237
 
3 liveuser 2238
					#如果有指定 key 階層
2239
					if(isset($conf["equalKeyStruc"])){
226 liveuser 2240
 
3 liveuser 2241
						#初始化儲存用來比對是否相符的變數
2242
						$valInArray=$arrayAdded;
226 liveuser 2243
 
3 liveuser 2244
						#debug
2245
						#var_dump(__LINE__,$valInArray);
226 liveuser 2246
 
3 liveuser 2247
						#針對每個 key 階層
2248
						foreach($conf["equalKeyStruc"] as $keyLayer){
226 liveuser 2249
 
3 liveuser 2250
							#如果沒有該階層
2251
							if(!isset($valInArray[$keyLayer])){
226 liveuser 2252
 
3 liveuser 2253
								#換看下個元素
2254
								continue 2;
226 liveuser 2255
 
3 liveuser 2256
								}#if end
226 liveuser 2257
 
3 liveuser 2258
							#取得對應key的內容
2259
							$valInArray=$valInArray[$keyLayer];
226 liveuser 2260
 
3 liveuser 2261
							}#foreach end
226 liveuser 2262
 
3 liveuser 2263
						#預設要新增
2264
						$add=true;
226 liveuser 2265
 
3 liveuser 2266
						#針對已經合併好的陣列中的每個元素
2267
						foreach($result["content"] as $index => $val){
226 liveuser 2268
 
3 liveuser 2269
							#針對每個 key 階層
2270
							foreach($conf["equalKeyStruc"] as $keyLayer){
226 liveuser 2271
 
3 liveuser 2272
								#取得對應key的內容
2273
								$val=$val[$keyLayer];
226 liveuser 2274
 
3 liveuser 2275
								}#foreach end
226 liveuser 2276
 
3 liveuser 2277
							#如果遇到新的相同內容
2278
							if($val===$valInArray){
226 liveuser 2279
 
3 liveuser 2280
								#用新的取代舊的
2281
								$result["content"][$index]=$array;
226 liveuser 2282
 
3 liveuser 2283
								#設置不用新增
2284
								$add=false;
226 liveuser 2285
 
3 liveuser 2286
								}#if end
226 liveuser 2287
 
3 liveuser 2288
							}#foreach end
226 liveuser 2289
 
3 liveuser 2290
						#如果要新增
2291
						if($add){
226 liveuser 2292
 
3 liveuser 2293
							#新增之
2294
							$result["content"][]=$arrayAdded;
226 liveuser 2295
 
3 liveuser 2296
							#debug
2297
							#var_dump(__LINE__,$result["content"]);
226 liveuser 2298
 
3 liveuser 2299
							#跳到下一個
2300
							continue;
226 liveuser 2301
 
2302
							}#if end
2303
 
3 liveuser 2304
						}#if end
226 liveuser 2305
 
3 liveuser 2306
					#反之如果有重複了
2307
					else if(in_array($arrayAdded,$result["content"])){
226 liveuser 2308
 
3 liveuser 2309
						#跳到下一個
2310
						continue;
226 liveuser 2311
 
3 liveuser 2312
						}#if end
226 liveuser 2313
 
3 liveuser 2314
					}#if end
2315
 
2316
				#將之合併到 $result 陣列裡面
2317
				$result["content"][]=$arrayAdded;
2318
 
2319
				}#foreach end
2320
 
2321
			}#foreach end
2322
 
2323
		#設置執行正常
2324
		$result["status"]="true";
2325
 
2326
		#回傳結果
226 liveuser 2327
		return $result;
2328
 
3 liveuser 2329
		}#function mergeMultiDimensionArray end
2330
 
2331
	/*
2332
	#函式說明:
2333
	#透過多個擁有一樣數量元素的一維陣列,透過指定的連接字串,組成一組同樣數量的一維陣列。
2334
	#回傳結果:
2335
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常。
2336
	#$result["error"],錯誤訊息。
2337
	#$result["content"],組合成新值的一維陣列。
2338
	#$result["function"],當前執行的函數名稱。
2339
	#$result["argu"],使用的參數.
2340
	#必填參數:
2341
	#$conf["arrays"],二維陣列,爲要依序由哪些陣列變數來進行組合
2342
	$conf["arrays"]=array();
2343
	#可省略參數:
2344
	#$conf["combineSymbolArray"],陣列字串,數量爲$conf["arrays"]減一,爲用於連結各一維陣列變數的連接字串,預設皆爲"<=>"。
2345
	#$conf["combineSymbolArray"]=array();
2346
	#參考資料:
2347
	#無.
2348
	#備註:
2349
	#無.
2350
	*/
2351
	public static function combineToNewArray(&$conf){
2352
 
2353
		#初始化要回傳的變數
2354
		$result=array();
2355
 
2356
		#初始化儲存合併好的一維陣列
2357
		$result["content"]=array();
2358
 
2359
		#取得當前執行的函數名稱
2360
		$result["function"]=__FUNCTION__;
2361
 
2362
		#取得參數
2363
		$result["argu"]=$conf;
2364
 
2365
		#如果 $conf 不為陣列
2366
		if(gettype($conf)!="array"){
2367
 
2368
			#設置執行失敗
2369
			$result["status"]="false";
2370
 
2371
			#設置執行錯誤訊息
2372
			$result["error"][]="\$conf變數須為陣列形態";
2373
 
2374
			#如果傳入的參數為 null
2375
			if($conf==null){
2376
 
2377
				#設置執行錯誤訊息
2378
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2379
 
2380
				}#if end
2381
 
2382
			#回傳結果
2383
			return $result;
2384
 
2385
			}#if end
2386
 
2387
		#函式說明:
2388
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2389
		#回傳的結果:
2390
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2391
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2392
		#$result["function"],當前執行的函式名稱.
2393
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2394
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2395
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2396
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2397
		#必填寫的參數:
2398
		$conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
2399
		$conf["variableCheck.isexistMulti"]["variableCheck"]=array("arrays");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2400
		#可以省略的參數:
2401
		$conf["variableCheck.isexistMulti"]["variableType"]=array("array");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
2402
		$conf["variableCheck.isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2403
		$checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
2404
		unset($conf["variableCheck.isexistMulti"]);
2405
 
2406
		#如果檢查出錯
2407
		if($checkResult["status"]=="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
		if($checkResult["passed"]=="false"){
2422
 
2423
			#設置執行不正常
2424
			$result["status"]="false";
2425
 
2426
			#設置錯誤訊息
2427
			$result["erorr"]=$checkResult;
2428
 
2429
			#回傳結果
2430
			return $result;
2431
 
2432
			}#if end
2433
 
2434
		#函式說明:
2435
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
2436
		#回傳結果:
2437
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2438
		#$result["error"],錯誤訊息陣列.
2439
		#$result["function"],當前執行的函式名稱.
2440
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
2441
		#必填參數:
2442
		#$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
2443
		$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf;
2444
		#$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
2445
		$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array("arrays");
2446
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
2447
		$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array("array");
2448
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
2449
		$argu=&$conf;
2450
		#可省略參數:
2451
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,"null"代表不指定.
2452
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array("",);
2453
		#無
2454
		$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
2455
		unset($conf["variableCheck.checkSkipableVarType"]);
2456
 
2457
		#如果檢查出錯
2458
		if($checkResult["status"]=="false"){
2459
 
2460
			#設置執行不正常
2461
			$result["status"]="false";
2462
 
2463
			#設置錯誤訊息
2464
			$result["erorr"]=$checkResult;
2465
 
2466
			#回傳結果
2467
			return $result;
2468
 
2469
			}#if end
2470
 
2471
		#如果檢查不通過
2472
		if($checkResult["passed"]=="false"){
2473
 
2474
			#設置執行不正常
2475
			$result["status"]="false";
2476
 
2477
			#設置錯誤訊息
2478
			$result["erorr"]=$checkResult;
2479
 
2480
			#回傳結果
2481
			return $result;
2482
 
2483
			}#if end
2484
 
2485
		#如果 $conf["combineSymbolArray"] 沒有設定
2486
		if(!isset($conf["combineSymbolArray"])){
2487
 
2488
			#執行迴圈 count($conf["arrays"]) 次
2489
			for($i=0;$i<count($conf["arrays"]);$i++){
2490
 
2491
				#預設爲 "<=>"
2492
				$conf["combineSymbolArray"][]="<=>";
2493
 
2494
				}#for end
2495
 
2496
			}#if end
2497
 
2498
		#執行 count($conf["arrays"][0]) 次迴圈
2499
		for($i=0;$i<count($conf["arrays"][0]);$i++){
2500
 
2501
			#執行迴圈 count($conf["arrays"]) 次
2502
			for($j=0;$j<count($conf["arrays"]);$j++){
2503
 
2504
				#如果不是第一個陣列
2505
				if($j!=0){
2506
 
2507
					#取得新陣列的元素與連接字串
2508
					$result["content"][$i]=$result["content"][$i].$conf["combineSymbolArray"][$j-1].$conf["arrays"][$j][$i];
2509
 
2510
					}#if end
2511
 
2512
				#反之是第一個陣列
2513
				else{
2514
 
2515
					#取得新陣列的元素
2516
					$result["content"][$i]=$conf["arrays"][$j][$i];
2517
 
2518
					}#else end
2519
 
2520
				}#for end
2521
 
2522
			}#for end
2523
 
2524
		#執行到這邊代表執行正常
2525
		$result["status"]="true";
2526
 
2527
		#回傳結果
2528
		return $result;
2529
 
2530
		}#function combineToNewArray end
2531
 
2532
	/*
2533
	#函式說明:
2534
	#將陣列倒置.
2535
	#回傳的結果:
2536
	#$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗.
2537
	#$result["error"],錯誤訊息陣列.
2538
	#$result["function"],當前執行的函數名稱.
2539
	#$result["convertArray"],轉置後的陣列內容.
2540
	#必填參數:
2541
	#$conf["inputArray"],陣列,要倒置的陣列.
2542
	$conf["inputArray"]=array();
2543
	#可省略參數:
2544
	#無.
2545
	#參考資料:
2546
	#無.
2547
	#備註:
2548
	#參考資料來源 http://tw2.php.net/array_reverse => 陣列倒置的內建涵式.
2549
	*/
2550
	public static function convertArray(&$conf){
2551
 
2552
		#初始化要回傳的內容
2553
		$result=array();
2554
 
2555
		#取得當前執行的函數名稱
2556
		$result["function"]=__FUNCTION__;
2557
 
2558
		#如果 $conf 不為陣列
2559
		if(gettype($conf)!="array"){
2560
 
2561
			#設置執行失敗
2562
			$result["status"]="false";
2563
 
2564
			#設置執行錯誤訊息
2565
			$result["error"][]="\$conf變數須為陣列形態";
2566
 
2567
			#如果傳入的參數為 null
2568
			if($conf==null){
2569
 
2570
				#設置執行錯誤訊息
2571
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2572
 
2573
				}#if end
2574
 
2575
			#回傳結果
2576
			return $result;
2577
 
2578
			}#if end
2579
 
2580
		#函式說明:
2581
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2582
		#回傳的結果:
2583
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2584
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2585
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2586
		#必填寫的參數:
2587
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
2588
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("inputArray");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2589
		#可以省略的參數:
2590
		#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
2591
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2592
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
2593
		unset($conf["variableCheck"]["isexistMuti"]);
2594
 
2595
		#如果檢查失敗
2596
		if($checkResult["status"]=="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
		if($checkResult["passed"]=="false"){
2611
 
2612
			#設置執行不正常
2613
			$result["status"]="false";
2614
 
2615
			#設置執行錯誤訊息
2616
			$result["error"]=$checkResult;
2617
 
2618
			#回傳結果
2619
			return $result;
2620
 
2621
			}#if end
2622
 
2623
		#取得轉置後的內容
2624
		$result["convertArray"]=array_reverse($conf["inputArray"]);
2625
 
2626
		#值行到這邊執行成功
2627
		$result["status"]="true";
2628
 
2629
		#回傳節果
2630
		return $result;
2631
 
2632
		}#function convertArray end
2633
 
2634
	/*
2635
	#函式說明:
2636
	#將一陣列每個元素間插入一個特定的元素
2637
	#回傳的結果:
2638
	#$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗
2639
	#$result["error"],錯誤訊息陣列.
2640
	#$result["function"],當前執行的函數
2641
	#$result["content"],插入完元素的新陣列.
2642
	#必填參數:
2643
	#$conf["inputArray"],陣列,要處理的陣列變數.
2644
	$conf["inputArray"]=array();
2645
	#$conf["insertElement"],字串,要加入的元素.
2646
	$conf["insertElement"]="";
2647
	#可省略參數:
2648
	#無.
2649
	#參考資料:
2650
	#無.
2651
	#備註:
2652
	#無.
2653
	*/
2654
	public static function insertElementBetweenElements(&$conf){
2655
 
2656
		#初始化要回傳的結果
2657
		$result=array();
2658
 
2659
		#取得當前執行的函數名稱
2660
		$result["function"]=__FUNCTION__;
2661
 
2662
		#如果 $conf 不為陣列
2663
		if(gettype($conf)!="array"){
2664
 
2665
			#設置執行失敗
2666
			$result["status"]="false";
2667
 
2668
			#設置執行錯誤訊息
2669
			$result["error"][]="\$conf變數須為陣列形態";
2670
 
2671
			#如果傳入的參數為 null
2672
			if($conf==null){
2673
 
2674
				#設置執行錯誤訊息
2675
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2676
 
2677
				}#if end
2678
 
2679
			#回傳結果
2680
			return $result;
2681
 
2682
			}#if end
2683
 
2684
		#檢查參數
2685
		#函式說明:
2686
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2687
		#回傳的結果:
2688
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2689
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2690
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2691
		#必填寫的參數:
2692
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
2693
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("inputArray","insertElement");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2694
		#可以省略的參數:
2695
		$conf["variableType"]=array("array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
2696
		$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2697
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
2698
		unset($conf["variableCheck"]["isexistMuti"]);
2699
 
2700
		#如果檢查失敗
2701
		if($checkResult["status"]=="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
		if($checkResult["passed"]=="false"){
2716
 
2717
			#設置錯誤識別
2718
			$result["status"]="false";
2719
 
2720
			#設置錯誤訊息
2721
			$result["error"]=$checkResult;
2722
 
2723
			#回傳結果
2724
			return $result;
2725
 
2726
			}#if end
2727
 
2728
		#複製原始的陣列
2729
		$oriArray=$conf["inputArray"];
2730
 
2731
		#初始化暫存和合併後的新陣列變數
2732
		$newCombinedArray=array();
2733
 
2734
		#執行 count($oriArray) 次迴圈
2735
		for($j=0;$j<count($oriArray);$j++){
2736
 
2737
			#取得原始陣列的一個元素
2738
			$newCombinedArray[]=$oriArray[$j];
2739
 
2740
			#如果 不是最後一個原始陣列的元素
2741
			if($j!=count($oriArray)-1){
2742
 
2743
				#放置一個元素到陣列裡面
2744
				$newCombinedArray[]=$conf["insertElement"];
2745
 
2746
				}#if end
2747
 
2748
			}#for end
2749
 
2750
		#取得插入完元素的陣列
2751
		$result["content"]=$newCombinedArray;
2752
 
2753
		#設置執行正常的識別
2754
		$result["status"]="true";
2755
 
2756
		#回傳結果
2757
		return $result;
2758
 
2759
		}#function insertElementBetweenElements end
2760
 
2761
	/*
2762
	#函式說明:
2763
	#將特定符號間隔的字串"a,b,c"變成陣列.
2764
	#回傳的結果:
2765
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2766
	#$result["function"],當前執行的function名稱.
2767
	#$result["argu"],使用的參數.
2768
	#$result["error"],錯誤訊息陣列.
2769
	#$result["content"],處理好的內容.
2770
	#必填參數:
2771
	#$conf["inputStr"],字串,要轉一維陣列的字串
2772
	$conf["inputStr"]="";
2773
	#可省略參數:
2774
	#$conf["spiltSymbol"],字串,用來區隔字串的符號,預設為","
2775
	#$conf["spiltSymbol"]=",";
2776
	#參考資料:
2777
	#無.
2778
	#備註:
2779
	#無.
2780
	*/
2781
	public static function stringToArray(&$conf){
226 liveuser 2782
 
3 liveuser 2783
		#初始化要回傳的變數
2784
		$result=array();
2785
 
2786
		#初始化當前執行的函數名稱
2787
		$result["funciton"]=__FUNCTION__;
2788
 
2789
		#如果 $conf 不為陣列
2790
		if(gettype($conf)!="array"){
2791
 
2792
			#設置執行失敗
2793
			$result["status"]="false";
2794
 
2795
			#設置執行錯誤訊息
2796
			$result["error"][]="\$conf變數須為陣列形態";
2797
 
2798
			#如果傳入的參數為 null
2799
			if($conf==null){
2800
 
2801
				#設置執行錯誤訊息
2802
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2803
 
2804
				}#if end
2805
 
2806
			#回傳結果
2807
			return $result;
2808
 
2809
			}#if end
2810
 
2811
		#取得使用的參數
2812
		$result["argu"]=$conf;
226 liveuser 2813
 
3 liveuser 2814
		#檢查參數
2815
		#函式說明:
2816
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2817
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2818
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2819
		#$result["function"],當前執行的函式名稱.
2820
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2821
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2822
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2823
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2824
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2825
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
2826
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
2827
		#必填寫的參數:
2828
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2829
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2830
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2831
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputStr");
226 liveuser 2832
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
3 liveuser 2833
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
2834
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2835
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2836
		#可以省略的參數:
2837
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
2838
		#$conf["canBeEmptyString"]="false";
2839
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2840
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("spiltSymbol");
226 liveuser 2841
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 2842
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
2843
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2844
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(",");
2845
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2846
		#$conf["arrayCountEqualCheck"][]=array();
2847
		#參考資料來源:
2848
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2849
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2850
		unset($conf["variableCheck::checkArguments"]);
2851
 
2852
		#如果檢查有誤
2853
		if($checkResult["status"]=="false"){
226 liveuser 2854
 
3 liveuser 2855
			#設置錯誤識別
2856
			$result["status"]="false";
226 liveuser 2857
 
3 liveuser 2858
			#設置錯誤訊息
2859
			$result["error"]=$checkResult;
226 liveuser 2860
 
3 liveuser 2861
			#回傳結果
2862
			return $result;
226 liveuser 2863
 
3 liveuser 2864
			}#if end
226 liveuser 2865
 
3 liveuser 2866
		#如果檢查不通過
2867
		if($checkResult["passed"]=="false"){
226 liveuser 2868
 
3 liveuser 2869
			#設置錯誤識別
2870
			$result["status"]="false";
226 liveuser 2871
 
3 liveuser 2872
			#設置錯誤訊息
2873
			$result["error"]=$checkResult;
226 liveuser 2874
 
3 liveuser 2875
			#回傳結果
2876
			return $result;
226 liveuser 2877
 
3 liveuser 2878
			}#if end
226 liveuser 2879
 
3 liveuser 2880
		#函式說明:
2881
		#將固定格式的字串分開,並回傳分開的結果。
2882
		#回傳結果:
2883
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2884
		#$result["error"],錯誤訊息陣列
2885
		#$result["function"],當前執行的函數名稱.
2886
		#$result["argu"],使用的參數.
2887
		#$result["oriStr"],要分割的原始字串內容
2888
		#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
2889
		#$result["dataCounts"],爲總共分成幾段
2890
		#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
2891
		#必填參數:
2892
		$conf["stringProcess::spiltString"]["stringIn"]=$conf["inputStr"];#要處理的字串。
2893
		$conf["stringProcess::spiltString"]["spiltSymbol"]=$conf["spiltSymbol"];#爲以哪個符號作爲分割
2894
		#可省略參數:
2895
		#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
2896
		$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
2897
		$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
2898
		unset($conf["stringProcess::spiltString"]);
226 liveuser 2899
 
3 liveuser 2900
		#如果分割字串失敗
2901
		if($spiltString["status"]==="false"){
226 liveuser 2902
 
3 liveuser 2903
			#設置錯誤識別
2904
			$result["status"]="false";
226 liveuser 2905
 
3 liveuser 2906
			#設置錯誤訊息
2907
			$result["error"]=$spiltString;
226 liveuser 2908
 
3 liveuser 2909
			#回傳結果
2910
			return $result;
226 liveuser 2911
 
3 liveuser 2912
			}#if end
226 liveuser 2913
 
3 liveuser 2914
		#取得分割好的字串陣列
2915
		$result["content"]=$spiltString["dataArray"];
226 liveuser 2916
 
3 liveuser 2917
		#設置執行正常
2918
		$result["status"]="true";
226 liveuser 2919
 
3 liveuser 2920
		#回傳結果
2921
		return $result;
226 liveuser 2922
 
3 liveuser 2923
		}#function stringToArray end
226 liveuser 2924
 
3 liveuser 2925
	/*
2926
	#函式說明:
2927
	#將一維陣列轉換為用特定符號間隔的字串,ex:array("1","2","3") to "a;b;c;".
2928
	#回傳的結果:
2929
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2930
	#$result["function"],當前執行的function名稱
2931
	#$result["error"],錯誤訊息陣列.
2932
	#$result["content"],處理好的字串.
2933
	#$result["argu"],使用的參數.
2934
	#必填參數:
2935
	#$conf["inputArray"],字串陣列,要轉成字串的一維陣列.
2936
	$conf["inputArray"]=array();
2937
	#可省略參數:
2938
	#$conf["spiltSymbol"],字串,用來區隔字串的符號,預設為;
2939
	#$conf["spiltSymbol"]=";";
2940
	#$conf["skipEnd"],字串,結尾是否不要加上符號,預設為"false",要加上符號,"true"代表不要加上符號。
2941
	#$conf["skipEnd"]="";
2942
	#$conf["spiltSymbolAtStart"],字串,是否要在開頭加上spiltSymbol,預設為"false",代表不要;反之為“true”.
2943
	#$conf["spiltSymbolAtStart"]="";
2944
	#參考資料:
2945
	#無.
2946
	#備註:
2947
	#無.
2948
	*/
2949
	public static function arrayToString(&$conf){
2950
 
2951
		#初始化要回傳的變數
2952
		$result=array();
2953
 
2954
		#初始化當前執行的函數名稱
2955
		$result["funciton"]=__FUNCTION__;
2956
 
2957
		#如果 $conf 不為陣列
2958
		if(gettype($conf)!="array"){
2959
 
2960
			#設置執行失敗
2961
			$result["status"]="false";
2962
 
2963
			#設置執行錯誤訊息
2964
			$result["error"][]="\$conf變數須為陣列形態";
2965
 
2966
			#如果傳入的參數為 null
2967
			if($conf==null){
2968
 
2969
				#設置執行錯誤訊息
2970
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2971
 
2972
				}#if end
2973
 
2974
			#回傳結果
2975
			return $result;
2976
 
2977
			}#if end
2978
 
2979
		#取得使用的參數
2980
		$result["argu"]=$conf;
226 liveuser 2981
 
3 liveuser 2982
		#函式說明:
2983
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
2984
		#回傳結果:
2985
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2986
		#$result["error"],執行不正常結束的錯訊息陣列.
2987
		#$result["simpleError"],簡單表示的錯誤訊息.
2988
		#$result["function"],當前執行的函式名稱.
2989
		#$result["argu"],設置給予的參數.
2990
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2991
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2992
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2993
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
2994
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
2995
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2996
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
2997
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
2998
		#必填參數:
2999
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3000
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3001
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3002
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3003
		#可省略參數:
3004
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3005
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
3006
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
3007
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
3008
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
3009
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
3010
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
3011
		#$conf["canNotBeEmpty"]=array();
3012
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
3013
		#$conf["canBeEmpty"]=array();
3014
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
3015
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("skipEnd","spiltSymbolAtStart");
3016
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3017
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("spiltSymbol","skipEnd","spiltSymbolAtStart");
3018
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3019
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string");
3020
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3021
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(";","false","false");
3022
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
3023
		#$conf["variadbleCheck::checkArguments"]["disallowAllSkipableVarIsEmpty"]="";
3024
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
3025
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
3026
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
3027
		#$conf["disallowAllSkipableVarNotExist"]="";
3028
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3029
		#$conf["arrayCountEqualCheck"][]=array();
3030
		#參考資料:
3031
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3032
		#備註:
3033
		#無.
3034
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3035
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 3036
 
3 liveuser 3037
		#如果執行失敗
3038
		if($checkArguments["status"]==="false"){
226 liveuser 3039
 
3 liveuser 3040
			#設置執行錯誤的識別
3041
			$result["status"]="false";
3042
 
3043
			#設置錯誤訊息
3044
			$result["error"]=$checkArguments;
3045
 
3046
			#回傳結果
3047
			return $result;
226 liveuser 3048
 
3 liveuser 3049
			}#if end
226 liveuser 3050
 
3 liveuser 3051
		#如果檢查不通過
3052
		if($checkArguments["passed"]==="false"){
226 liveuser 3053
 
3 liveuser 3054
			#設置執行錯誤的識別
3055
			$result["status"]="false";
3056
 
3057
			#設置錯誤訊息
3058
			$result["error"]=$checkArguments;
3059
 
3060
			#回傳結果
3061
			return $result;
226 liveuser 3062
 
3 liveuser 3063
			}#if end
226 liveuser 3064
 
3 liveuser 3065
		#初始化 $result["content"]
3066
		$result["content"]="";
3067
 
3068
		#如果開頭就要放置分割的字串
3069
		if($conf["spiltSymbolAtStart"]==="true"){
226 liveuser 3070
 
3 liveuser 3071
			#串接分割的字串
3072
			$result["content"]=$result["content"].$conf["spiltSymbol"];
226 liveuser 3073
 
3 liveuser 3074
			}#if end
3075
 
3076
		#紀錄總共有幾個變數
3077
		$Tcount=count($conf["inputArray"]);
3078
 
3079
		#暫存計數的變數
3080
		$count=0;
3081
 
3082
		#$conf["inputArray"]陣列有幾個元素就執行幾次
3083
		foreach($conf["inputArray"] as $elementValue){
3084
 
3085
			#計數
3086
			$count++;
3087
 
3088
			#如果要串接的內容不為字串
3089
			if(gettype($elementValue)!=="string"){
226 liveuser 3090
 
3 liveuser 3091
				#設置錯誤識別
3092
				$result["status"]="false";
3093
 
3094
				#設置錯誤訊息
3095
				$result["error"][]="要串接的內容須為字串";
3096
 
3097
				#設置錯誤訊息
3098
				$result["error"][]=$elementValue;
226 liveuser 3099
 
3 liveuser 3100
				#設置錯誤訊息
3101
				$result["error"][]="wrong type is ".gettype($elementValue);
3102
 
3103
				#回傳結果
3104
				return $result;
226 liveuser 3105
 
3 liveuser 3106
				}#if end
3107
 
3108
			#如果是最後一個
3109
			if($count===$Tcount && $conf["skipEnd"]==="true"){
3110
 
3111
				#組合字串
3112
				$result["content"]=$result["content"].$elementValue;
3113
 
3114
				}#if end
3115
 
3116
			#反之
3117
			else{
3118
 
3119
				#組合字串
3120
				$result["content"]=$result["content"].$elementValue.$conf["spiltSymbol"];
3121
 
3122
				}#else
3123
 
3124
			}#foreach end
3125
 
3126
		#設置執行結果正常
3127
		$result["status"]="true";
3128
 
3129
		#回傳結果
3130
		return $result;
3131
 
3132
		}#funciton arrayToString
3133
 
3134
	/*
3135
	#函式說明:
3136
	#傳參考來交換兩變數
3137
	#回傳結果:
3138
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3139
	#$result["function"],當前執行的function名稱
3140
	#$result["error"],錯誤訊息陣列.
3141
	#必填參數:
3142
	#$conf["num1"],參考變數,要交換的變數1。
3143
	$conf["num1"]=&;
3144
	#$conf["num2"],參考變數,要交換的變數2。
3145
	$conf["num2"]=&;
3146
	#可省略參數:
3147
	#無.
3148
	#參考資料:
3149
	#無.
3150
	#備註:
3151
	#無.
3152
	*/
3153
	public static function swapByReference(&$conf){
3154
 
3155
		#初始化要回傳的結果
3156
		$result=array();
3157
 
3158
		#取得當前函數名稱
3159
		$result["function"]=__FUNCTION__;
3160
 
3161
		#如果 $conf 不為陣列
3162
		if(gettype($conf)!="array"){
3163
 
3164
			#設置執行失敗
3165
			$result["status"]="false";
3166
 
3167
			#設置執行錯誤訊息
3168
			$result["error"][]="\$conf變數須為陣列形態";
3169
 
3170
			#如果傳入的參數為 null
3171
			if($conf==null){
3172
 
3173
				#設置執行錯誤訊息
3174
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3175
 
3176
				}#if end
3177
 
3178
			#回傳結果
3179
			return $result;
3180
 
3181
			}#if end
3182
 
3183
		#檢查參數
3184
		#函式說明:
3185
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
3186
		#回傳的結果:
3187
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3188
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3189
		#$result["function"],當前執行的函式名稱.
3190
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3191
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3192
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3193
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3194
		#必填寫的參數:
3195
		$conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
3196
		$conf["variableCheck.isexistMulti"]["variableCheck"]=array("num1","num2");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
3197
		#可以省略的參數:
3198
		#$conf["variableCheck.isexistMulti"]["variableType"]=array("array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
3199
		$conf["variableCheck.isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
3200
		$checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
3201
		unset($conf["variableCheck.isexistMulti"]);
3202
 
3203
		#如果 $checkResult["status"] 為 "false"
3204
		if($checkResult["status"]=="false"){
3205
 
3206
			#設置錯誤識別
3207
			$result["status"]="false";
3208
 
3209
			#設置發生錯誤的函式
3210
			$result["error"]=$checkResult;
3211
 
3212
			#回傳結果
3213
			return $result;
3214
 
3215
			}#if end
3216
 
3217
		#如果 $checkResult["passed"] 為 "false"
3218
		if($checkResult["passed"]=="false"){
3219
 
3220
			#設置錯誤識別
3221
			$result["status"]="false";
3222
 
3223
			#設置發生錯誤的函式
3224
			$result["error"]=$checkResult;
3225
 
3226
			#回傳結果
3227
			return $result;
3228
 
3229
			}#if end
3230
 
3231
		#將第一個變數存在 $tmp 裡面
3232
		$tmp=$conf["num1"];
3233
 
3234
		#將第一個變數用第二個變數取代
3235
		$conf["num1"]=$conf["num2"];
3236
 
3237
		#將第二個變數用第一個變數取代
3238
		$conf["num2"]=$tmp;
3239
 
3240
		#執行到這邊代表正常
3241
		$result["status"]="true";
3242
 
3243
		#回傳結果
3244
		return $result;
3245
 
3246
		}#function swapByReference end
3247
 
3248
	/*
3249
	#函式說明:
3250
	#排序含有多資訊的二維陣列
3251
	#回傳結果:
3252
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3253
	#$result["function"],當前執行的function名稱
3254
	#$result["error"],錯誤訊息陣列.
3255
	#$result["content"],處理好的字串.
3256
	#必填參數:
3257
	#$conf["unArrangeArray"],參考二維陣列,要的排序二維陣列。
3258
	$conf["unArrangeArray"]=&;
3259
	#$conf["compareKey"],字串,儲存用來比較大小的一維陣列key名稱。
3260
	$conf["compareKey"]=;
3261
	#可省參數:
3262
	#$conf["type"],字串,排序的類型,"asc"代表遞增,"desc"代表遞減,預設為"desc"。
3263
	$conf["type"]="desc";
3264
	#可省略參數:
3265
	#無.
3266
	#參考資料:
3267
	#無.
3268
	#備註:
3269
	#排序有錯.
3270
	*/
3271
	public static function arrangeTwoDmensionArray(&$conf){
3272
 
3273
		#初始化要回傳的變數
3274
		$result=array();
3275
 
3276
		#初始化當前執行的函數名稱
3277
		$result["funciton"]=__FUNCTION__;
3278
 
3279
		#如果 $conf 不為陣列
3280
		if(gettype($conf)!="array"){
3281
 
3282
			#設置執行失敗
3283
			$result["status"]="false";
3284
 
3285
			#設置執行錯誤訊息
3286
			$result["error"][]="\$conf變數須為陣列形態";
3287
 
3288
			#如果傳入的參數為 null
3289
			if($conf==null){
3290
 
3291
				#設置執行錯誤訊息
3292
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3293
 
3294
				}#if end
3295
 
3296
			#回傳結果
3297
			return $result;
3298
 
3299
			}#if end
3300
 
3301
		#檢查參數
3302
		#函式說明:
3303
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
3304
		#回傳的結果:
3305
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3306
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3307
		#$result["function"],當前執行的函式名稱.
3308
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3309
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3310
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3311
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3312
		#必填寫的參數:
3313
		$conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
3314
		$conf["variableCheck.isexistMulti"]["variableCheck"]=array("unArrangeArray","compareKey");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
3315
		#可以省略的參數:
3316
		$conf["variableCheck.isexistMulti"]["variableType"]=array("array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
3317
		$conf["variableCheck.isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
3318
		$checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
3319
		unset($conf["variableCheck.isexistMulti"]);
3320
 
3321
		#如果 $checkResult["status"] 為 "false"
3322
		if($checkResult["status"]=="false"){
3323
 
3324
			#設置錯誤識別
3325
			$result["status"]="false";
3326
 
3327
			#設置發生錯誤的函式
3328
			$result["error"]=$checkResult;
3329
 
3330
			#回傳結果
3331
			return $result;
3332
 
3333
			}#if end
3334
 
3335
		#如果 $checkResult["passed"] 為 "false"
3336
		if($checkResult["passed"]=="false"){
3337
 
3338
			#設置錯誤識別
3339
			$result["status"]="false";
3340
 
3341
			#設置發生錯誤的函式
3342
			$result["error"]=$checkResult;
3343
 
3344
			#回傳結果
3345
			return $result;
3346
 
3347
			}#if end
3348
 
3349
		#檢查可省略的參數
3350
		#函式說明:
3351
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
3352
		#回傳結果:
3353
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3354
		#$result["error"],錯誤訊息陣列.
3355
		#$result["function"],當前執行的函式名稱.
3356
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
3357
		#必填參數:
3358
		#$conf["checkedVar"],陣列,要檢查的變數陣列名稱為?
3359
		$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf;
3360
		#$conf["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
3361
		$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array("type");
3362
		#$conf["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
3363
		$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array("string");
3364
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
3365
		$argu=&$conf;
3366
		#可省略參數:
3367
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,"null"代表不指定.
3368
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array("desc");
3369
		#無
3370
		$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
3371
		unset($conf["variableCheck.checkSkipableVarType"]);
3372
 
3373
		#var_dump($checkResult);
3374
 
3375
		#如果 $checkResult["status"] 為 "false"
3376
		if($checkResult["status"]=="false"){
3377
 
3378
			#設置錯誤識別
3379
			$result["status"]="false";
3380
 
3381
			#設置發生錯誤的函式
3382
			$result["error"]=$checkResult;
3383
 
3384
			#回傳結果
3385
			return $result;
3386
 
3387
			}#if end
3388
 
3389
		#如果 $checkResult["passed"] 為 "false"
3390
		if($checkResult["passed"]=="false"){
3391
 
3392
			#設置錯誤識別
3393
			$result["status"]="false";
3394
 
3395
			#設置發生錯誤的函式
3396
			$result["error"]=$checkResult;
3397
 
3398
			#回傳結果
3399
			return $result;
3400
 
3401
			}#if end
3402
 
3403
		#取得要排序的數目有多少
3404
		$count=count($conf["unArrangeArray"]);
3405
 
3406
		#debug
3407
		#var_dump($count);
3408
 
3409
		#debug
3410
		#var_dump($conf["unArrangeArray"]);
3411
 
3412
		#/*
3413
 
3414
		#判斷 $conf["type"]
3415
		switch($conf["type"]){
3416
 
3417
			#如果是 "desc"
3418
			case "desc":
3419
 
3420
				#迴圈,執行 $count 次
3421
				for($i=0;$i<$count;$i++){
3422
 
3423
					#迴圈 執行 $count-$i-1 次
3424
					for($j=$i+1;$j<$count;$j++){
3425
 
3426
						#debug
3427
						#echo $conf["unArrangeArray"][0][$conf["compareKey"]]." ".$conf["unArrangeArray"][1][$conf["compareKey"]]." ".$conf["unArrangeArray"][2][$conf["compareKey"]]."<p>";
3428
 
3429
						#debug
3430
						#echo "<p>max=".$max." \$i=".$i." \$j=".$j." ".$max."<".$conf["unArrangeArray"][$j][$conf["compareKey"]]."<p>";
3431
 
3432
						#如過資料不存在
3433
						if(!isset($conf["unArrangeArray"][$i])){
3434
 
3435
							#跳到下一輪
3436
							continue;
3437
 
3438
							}#if end
3439
 
3440
						#如果當前數值大於當前的$max
3441
						if($conf["unArrangeArray"][$i][$conf["compareKey"]]<$conf["unArrangeArray"][$j][$conf["compareKey"]]){
3442
 
3443
							#debug
3444
							#echo "<p>".$max."<".$conf["unArrangeArray"][$j][$conf["compareKey"]]."<p>";
3445
 
3446
							#函式說明:
3447
							#傳參考來交換兩變數
3448
							#回傳結果:
3449
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3450
							#$result["function"],當前執行的function名稱
3451
							#$result["error"],錯誤訊息陣列.
3452
							#必填參數:
3453
							#$conf["arrays.swap"]["num1"],要交換的變數1。
3454
							$conf["arrays.swap"]["num1"]=&$conf["unArrangeArray"][$i];
3455
							#$conf["arrays.swap"]["num2"],要交換的變數2。
3456
							$conf["arrays.swap"]["num2"]=&$conf["unArrangeArray"][$j];
3457
							$swapResult=arrays::swapByReference($conf["arrays.swap"]);
3458
							unset($conf["arrays.swap"]);
3459
 
3460
							#如果 $swapResult["status"] 等於 "false"
3461
							if($swapResult["status"]=="false"){
3462
 
3463
								#設置執行錯誤
3464
								$result["status"]="false";
3465
 
3466
								#設置錯誤訊息
3467
								$result["error"]=$swapResult;
3468
 
3469
								#回傳結果
3470
								return $result;
3471
 
3472
								}#if end
3473
 
3474
							}#if end
3475
 
3476
						#debug
3477
						#echo $conf["unArrangeArray"][0][$conf["compareKey"]]." ".$conf["unArrangeArray"][1][$conf["compareKey"]]." ".$conf["unArrangeArray"][2][$conf["compareKey"]]."<p>";
3478
 
3479
						}#for end
3480
 
3481
					}#for end
3482
 
3483
				#跳出switch
3484
				break;
3485
 
3486
			#如果是 "asc"
3487
			case "asc":
3488
 
3489
				#迴圈,執行 $count 次
3490
				for($i=0;$i<$count;$i++){
3491
 
3492
					#迴圈 執行 $count-$i-1 次
3493
					for($j=$i+1;$j<$count;$j++){
3494
 
3495
						#如果當前數值小於當前的$min
3496
						if($conf["unArrangeArray"][$i][$conf["compareKey"]]>$conf["unArrangeArray"][$j][$conf["compareKey"]]){
3497
 
3498
							#debug
3499
							#echo "<p>當前數值小於當前的$min<p>";
3500
 
3501
							#函式說明:
3502
							#傳參考來交換兩變數
3503
							#回傳結果:
3504
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3505
							#$result["function"],當前執行的function名稱
3506
							#$result["error"],錯誤訊息陣列.
3507
							#必填參數:
3508
							#$conf["arrays.swap"]["num1"],要交換的變數1。
3509
							$conf["arrays.swap"]["num1"]=&$conf["unArrangeArray"][$i];
3510
							#$conf["arrays.swap"]["num2"],要交換的變數2。
3511
							$conf["arrays.swap"]["num2"]=&$conf["unArrangeArray"][$j];
3512
							$swapResult=arrays::swapByReference($conf["arrays.swap"]);
3513
							unset($conf["arrays.swap"]);
3514
 
3515
							#如果 $swapResult["status"] 等於 "false"
3516
							if($swapResult["status"]=="false"){
3517
 
3518
								#設置執行錯誤
3519
								$result["status"]="false";
3520
 
3521
								#設置錯誤訊息
3522
								$result["error"]=$swapResult;
3523
 
3524
								#回傳結果
3525
								return $result;
3526
 
3527
								}#if end
3528
 
3529
							}#if end
3530
 
3531
						}#for end
3532
 
3533
					}#for end
3534
 
3535
				#跳出switch
3536
				break;
3537
 
3538
			}#switch end
3539
 
3540
		#*/
3541
 
3542
		#執行到這邊代表執行正常
3543
		$result["status"]="true";
3544
 
3545
		#回傳結果
3546
		return $result;
3547
 
3548
		}#function arrangeTwoDmensionArray end
3549
 
3550
	/*
3551
	#函式說明:
3552
	#將一陣列數值內容加上前置與後置字串
3553
	#回傳結果:
3554
	#$result["status"],執行正常與否,"true"代表執行正常,"false"代表執行不正常.
3555
	#$result["error"],錯誤訊息陣列.
3556
	#$result["function"],當前執行的函數名稱.
3557
	#$result["content"],加上前置與後置字串後的一維陣列
3558
	#必填參數:
3559
	#$conf["inputArray"],一維陣列變數,要增加前置與後置字串的陣列變數.
3560
	$conf["inputArray"]=array();
3561
	#$conf["headStr"],字串,$conf["inputArray"]中每個元素數值內容的前面都要加上的字串.
3562
	$conf["headStr"]="";
3563
	#$conf["tailStr"],字串,$conf["inputArray"]中每個元素數值內容的後面都要加上的字串.
3564
	$conf["tailStr"]="";
3565
	#可省略參數:
3566
	#無.
3567
	#參考資料:
3568
	#無.
3569
	#備註:
3570
	#無.
3571
	*/
3572
	public static function addStrToHeadAndTail(&$conf){
3573
 
3574
		#初始化要回傳的變數
3575
		$result=array();
3576
 
3577
		#初始化當前執行的函數名稱
3578
		$result["funciton"]=__FUNCTION__;
3579
 
3580
		#如果 $conf 不為陣列
3581
		if(gettype($conf)!="array"){
3582
 
3583
			#設置執行失敗
3584
			$result["status"]="false";
3585
 
3586
			#設置執行錯誤訊息
3587
			$result["error"][]="\$conf變數須為陣列形態";
3588
 
3589
			#如果傳入的參數為 null
3590
			if($conf==null){
3591
 
3592
				#設置執行錯誤訊息
3593
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3594
 
3595
				}#if end
3596
 
3597
			#回傳結果
3598
			return $result;
3599
 
3600
			}#if end
3601
 
3602
		#檢查參數
3603
		#函式說明:
3604
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3605
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3606
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3607
		#$result["function"],當前執行的函式名稱.
3608
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3609
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3610
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3611
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3612
		#必填寫的參數:
3613
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3614
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3615
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3616
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray","headStr","tailStr");
3617
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3618
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","string","string");
3619
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3620
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3621
		#可以省略的參數:
3622
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
3623
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
3624
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3625
		#$conf["skipableVariableName"]=array();
3626
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3627
		#$conf["skipableVariableType"]=array();
3628
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3629
		#$conf["skipableVarDefaultValue"]=array("");
3630
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3631
		#$conf["arrayCountEqualCheck"][]=array();
3632
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3633
		unset($conf["variableCheck::checkArguments"]);
3634
 
3635
		#如果檢查變數失敗
3636
		if($checkArguments["status"]=="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
		if($checkArguments["passed"]=="false"){
3651
 
3652
			#設置執行不正常
3653
			$result["status"]="false";
3654
 
3655
			#設置執行錯誤
3656
			$result["error"]=$checkArguments;
3657
 
3658
			#回傳結果
3659
			return $result;
3660
 
3661
			}#if end
3662
 
3663
		#初始化要回傳一維陣列變數
3664
		$result["content"]=array();
3665
 
3666
		#有幾個元素就執行幾次迴圈
3667
		foreach($conf["inputArray"] as $key => $value){
3668
 
3669
			#合成新元素
3670
			$result["content"][$key]=$conf["headStr"].$value.$conf["tailStr"];
3671
 
3672
			}#for end
3673
 
3674
		#設置執行正常
3675
		$result["status"]="true";
3676
 
3677
		#回傳結果
3678
		return $result;
3679
 
3680
		}#function addStrToHeadAndTail end
3681
 
3682
	/*
3683
	#函式說明:
3684
	#將陣列字串處理成一個個"[index] 元素內容"的格式,且[index]的寬度會依造陣列的長度而固定。
3685
	#回傳結果:
3686
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3687
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
3688
	#$result["function"],當前執行的函式名稱.
3689
	#$result["content"],處理好的陣列.
3690
	#必填參數:
3691
	#$conf["inputArray"],陣列字串,要轉換陣列.
3692
	$conf["inputArray"]=array();
3693
	#可省略參數:
3694
	#$conf["newLine"],字串,組合的內容是否要加換行符號,"true"代表要,"false"代表不要,預設為"ture".
3695
	#$conf["newLine"]="false";
3696
	#$conf["print"],字串,是否要直接印出來,"true"代表要,"false"代表不要,預設為"false".
3697
	#$conf["print"]="ture";
3698
	#參考資料:
3699
	#無.
3700
	#備註:
3701
	#無.
3702
	*/
3703
	public static function toPrintableIndex(&$conf){
3704
 
3705
		#初始化要回傳的結果
3706
		$result=array();
3707
 
3708
		#取得當前執行的函數名稱
3709
		$result["function"]=__FUNCTION__;
3710
 
3711
		#如果沒有參數
3712
		if(func_num_args()==0){
3713
 
3714
			#設置執行失敗
3715
			$result["status"]="false";
3716
 
3717
			#設置執行錯誤訊息
3718
			$result["error"]="函數".$result["function"]."需要參數";
3719
 
3720
			#回傳結果
3721
			return $result;
3722
 
3723
			}#if end
3724
 
3725
		#取得參數
3726
		$result["argu"]=$conf;
3727
 
3728
		#如果 $conf 不為陣列
3729
		if(gettype($conf)!=="array"){
3730
 
3731
			#設置執行失敗
3732
			$result["status"]="false";
3733
 
3734
			#設置執行錯誤訊息
3735
			$result["error"][]="\$conf變數須為陣列形態";
3736
 
3737
			#如果傳入的參數為 null
3738
			if($conf===null){
3739
 
3740
				#設置執行錯誤訊息
3741
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3742
 
3743
				}#if end
3744
 
3745
			#回傳結果
3746
			return $result;
3747
 
3748
			}#if end
3749
 
3750
		#檢查參數
3751
		#函式說明:
3752
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3753
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3754
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3755
		#$result["function"],當前執行的函式名稱.
3756
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3757
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3758
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3759
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
3760
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
3761
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
3762
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
3763
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
3764
		#必填寫的參數:
3765
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3766
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3767
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3768
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3769
		#可以省略的參數:
3770
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3771
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
3772
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
3773
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
3774
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
3775
		#$conf["canBeEmptyString"]="false";
3776
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
3777
		#$conf["canNotBeEmpty"]=array();
3778
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
3779
		#$conf["canBeEmpty"]=array();
3780
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
3781
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("newLine","print");
3782
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3783
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("newLine","print");
3784
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3785
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
3786
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3787
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true","false");
3788
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
3789
		#$conf["disallowAllSkipableVarIsEmpty"]="";
3790
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
3791
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
3792
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3793
		#$conf["arrayCountEqualCheck"][]=array();
3794
		#參考資料來源:
3795
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3796
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3797
		unset($conf["variableCheck::checkArguments"]);
3798
 
3799
		#如果檢查參數失敗
3800
		if($checkArguments["status"]==="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
		if($checkArguments["passed"]==="false"){
3815
 
3816
			#設置錯誤訊息
3817
			$result["error"]=$checkArguments;
3818
 
3819
			#設置執行失敗
3820
			$result["status"]="false";
3821
 
3822
			#回傳結果
3823
			return $result;
3824
 
3825
			}#if end
3826
 
3827
		#取得陣列計數長度
3828
		$arrayCountLen=strlen(count($conf["inputArray"]));
3829
 
3830
		#初始化換行符號
3831
		$newLine="\n";
3832
 
3833
		#如果不要換行符號
3834
		if($conf["newLine"]==="false"){
3835
 
3836
			#設置為空字串
3837
			$newLine="";
3838
 
3839
			}#if end
3840
 
3841
		#針對每個要處理的陣列
3842
		foreach($conf["inputArray"] as $key=>$val){
3843
 
3844
			#如果列數長度加3小於要移除檔案之計數長度
3845
			while(strlen($key)<$arrayCountLen){
3846
 
3847
				#在前面加上空格
3848
				$key=" ".$key;
3849
 
3850
				}#if end
3851
 
3852
			#組合內容
3853
			$result["content"][]="[".$key."] ".$val.$newLine;
3854
 
3855
			#如果要印出來
3856
			if($conf["print"]==="true"){
3857
 
3858
				#印出來
3859
				echo "[".$key."] ".$val.$newLine;
3860
 
3861
				}#if end
3862
 
3863
			}#foreach end
3864
 
3865
		#設置執行正常
3866
		$result["status"]="true";
3867
 
3868
		#回傳結果
3869
		return $result;
3870
 
3871
		}#function toPrintableIndex end
3872
 
3873
	/*
3874
	#函式說明:
3875
	#將陣列進行切割
3876
	#回傳結果:
3877
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3878
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
3879
	#$result["function"],當前執行的函式名稱.
3880
	#$result["content"]["get"],切割出來的陣列.
3881
	#$result["content"]["leftL"],遺留下來的陣列,左邊.
3882
	#$result["content"]["leftR"],遺留下來的陣列,右邊.
3883
	#$result["content"]["ori"],原始的陣列.
3884
	#$result["argu"],使用的參數.
3885
	#必填參數:
3886
	#$conf["array"],要進行分割的陣列.
3887
	$conf["array"]=array();
3888
	#$conf["length"],整數,要切幾個元素.
3889
	$conf["length"]=;
3890
	#可省略參數:
3891
	#$conf["offset"],整數,要從第幾個元素開始切,預設為0
3892
	#$conf["offset"]=0;
3893
	#參考資料:
3894
	#無.
3895
	#備註:
3896
	#無.
3897
	*/
3898
	public static function split(&$conf){
3899
 
3900
		#初始化要回傳的結果
3901
		$result=array();
3902
 
3903
		#取得當前執行的函數名稱
3904
		$result["function"]=__FUNCTION__;
3905
 
3906
		#如果沒有參數
3907
		if(func_num_args()==0){
3908
 
3909
			#設置執行失敗
3910
			$result["status"]="false";
3911
 
3912
			#設置執行錯誤訊息
3913
			$result["error"]="函數".$result["function"]."需要參數";
3914
 
3915
			#回傳結果
3916
			return $result;
3917
 
3918
			}#if end
3919
 
3920
		#取得參數
3921
		$result["argu"]=$conf;
3922
 
3923
		#如果 $conf 不為陣列
3924
		if(gettype($conf)!=="array"){
3925
 
3926
			#設置執行失敗
3927
			$result["status"]="false";
3928
 
3929
			#設置執行錯誤訊息
3930
			$result["error"][]="\$conf變數須為陣列形態";
3931
 
3932
			#如果傳入的參數為 null
3933
			if($conf===null){
3934
 
3935
				#設置執行錯誤訊息
3936
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3937
 
3938
				}#if end
3939
 
3940
			#回傳結果
3941
			return $result;
3942
 
3943
			}#if end
3944
 
3945
		#檢查參數
3946
		#函式說明:
3947
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3948
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3949
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3950
		#$result["function"],當前執行的函式名稱.
3951
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3952
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3953
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3954
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
3955
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
3956
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
3957
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
3958
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
3959
		#必填寫的參數:
3960
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3961
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3962
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3963
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3964
		#可以省略的參數:
3965
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3966
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("array","length");
3967
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
3968
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","integer");
3969
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
3970
		#$conf["canBeEmptyString"]="false";
3971
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
3972
		#$conf["canNotBeEmpty"]=array();
3973
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
3974
		#$conf["canBeEmpty"]=array();
3975
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
3976
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("offset");
3977
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3978
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("offset");
3979
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3980
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("integer");
3981
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3982
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(0);
3983
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
3984
		#$conf["disallowAllSkipableVarIsEmpty"]="";
3985
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
3986
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
3987
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3988
		#$conf["arrayCountEqualCheck"][]=array();
3989
		#參考資料來源:
3990
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3991
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3992
		unset($conf["variableCheck::checkArguments"]);
3993
 
3994
		#如果檢查參數失敗
3995
		if($checkArguments["status"]==="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
		if($checkArguments["passed"]==="false"){
4010
 
4011
			#設置錯誤訊息
4012
			$result["error"]=$checkArguments;
4013
 
4014
			#設置執行失敗
4015
			$result["status"]="false";
4016
 
4017
			#回傳結果
4018
			return $result;
4019
 
4020
			}#if end
4021
 
4022
		#初始化要回傳的結果
4023
		$result["content"]=array();
4024
 
4025
		#初始化儲存切割出來的陣列內容
4026
		$result["content"]["get"]=array();
4027
 
4028
		#初始化儲存剩下來的左方陣列
4029
		$result["content"]["leftL"]=array();
4030
 
4031
		#初始化儲存剩下來的右方陣列
4032
		$result["content"]["leftR"]=array();
4033
 
4034
		#設置原始的陣列
4035
		$result["content"]["ori"]=$conf["array"];
4036
 
4037
		#計數
4038
		$count=-1;
4039
 
4040
		#針對每個元素
4041
		foreach($conf["array"] as $key=>$val){
4042
 
4043
			#計數加0
4044
			++$count;
4045
 
4046
			#如果是開始要切割的位置
4047
			if($conf["offset"]<=$count){
4048
 
4049
				#如果切出的長度還不足
4050
				if($conf["length"]>count($result["content"]["get"])){
4051
 
4052
					#儲存切割出來的元素
226 liveuser 4053
					$result["content"]["get"][]=$val;
3 liveuser 4054
 
4055
					}#if end
4056
 
4057
				#反之切割出來的長度已經足夠了
4058
				else{
4059
 
4060
					#儲存剩下來的右方陣列
4061
					$result["content"]["leftR"][]=$val;
4062
 
4063
					}#else end
4064
 
4065
				}#if end
4066
 
4067
			#反之沒到要切割的位置
4068
			else{
226 liveuser 4069
 
3 liveuser 4070
				#儲存剩下來的右方陣列
4071
				$result["content"]["leftL"][]=$val;
4072
 
4073
				}#else end
4074
 
4075
			}#foreach end
226 liveuser 4076
 
3 liveuser 4077
		#設置執行正常
4078
		$result["status"]="true";
4079
 
4080
		#回傳結果
4081
		return $result;
4082
 
4083
		}#function split end
226 liveuser 4084
 
3 liveuser 4085
	/*
4086
	#函式說明:
4087
	#將既有的一維陣列變成二維陣列,新增指定或相同的欄位資訊.
4088
	#回傳結果:
4089
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4090
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
4091
	#$result["function"],當前執行的函式名稱.
4092
	#$result["content"],合併好的2維陣列.
4093
	#$result["argu"],使用的參數.
4094
	#必填參數:
4095
	#$conf["array"],陣列,要進行合併的一維陣列.
4096
	$conf["array"]=array();
4097
	#$conf["newArray"],陣列,要新增的欄位陣列,若資料筆數不等同於count($conf["array"]),則代表產生相同的欄位元素.
4098
	$conf["newArray"]=array();
4099
	#可省略參數:
4100
	#無.
4101
	#參考資料:
4102
	#無.
4103
	#備註:
4104
	#無.
4105
	*/
4106
	public static function addColumn(&$conf){
226 liveuser 4107
 
3 liveuser 4108
		#初始化要回傳的結果
4109
		$result=array();
4110
 
4111
		#取得當前執行的函數名稱
4112
		$result["function"]=__FUNCTION__;
4113
 
4114
		#如果沒有參數
4115
		if(func_num_args()==0){
4116
 
4117
			#設置執行失敗
4118
			$result["status"]="false";
4119
 
4120
			#設置執行錯誤訊息
4121
			$result["error"]="函數".$result["function"]."需要參數";
4122
 
4123
			#回傳結果
4124
			return $result;
4125
 
4126
			}#if end
4127
 
4128
		#取得參數
4129
		$result["argu"]=$conf;
4130
 
4131
		#如果 $conf 不為陣列
4132
		if(gettype($conf)!=="array"){
4133
 
4134
			#設置執行失敗
4135
			$result["status"]="false";
4136
 
4137
			#設置執行錯誤訊息
4138
			$result["error"][]="\$conf變數須為陣列形態";
4139
 
4140
			#如果傳入的參數為 null
4141
			if($conf===null){
4142
 
4143
				#設置執行錯誤訊息
4144
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4145
 
4146
				}#if end
4147
 
4148
			#回傳結果
4149
			return $result;
4150
 
4151
			}#if end
4152
 
4153
		#檢查參數
4154
		#函式說明:
4155
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4156
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4157
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4158
		#$result["function"],當前執行的函式名稱.
4159
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4160
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4161
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4162
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4163
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4164
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4165
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4166
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4167
		#必填寫的參數:
4168
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4169
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4170
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4171
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4172
		#可以省略的參數:
4173
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4174
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("array","newArray");
4175
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4176
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
4177
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4178
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4179
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4180
		#$conf["canNotBeEmpty"]=array();
4181
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4182
		#$conf["canBeEmpty"]=array();
4183
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4184
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("offset");
4185
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4186
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("offset");
4187
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4188
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("integer");
4189
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4190
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(0);
4191
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4192
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4193
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4194
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4195
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4196
		#$conf["arrayCountEqualCheck"][]=array();
4197
		#參考資料來源:
4198
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4199
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4200
		unset($conf["variableCheck::checkArguments"]);
4201
 
4202
		#如果檢查參數失敗
4203
		if($checkArguments["status"]==="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
		if($checkArguments["passed"]==="false"){
4218
 
4219
			#設置錯誤訊息
4220
			$result["error"]=$checkArguments;
4221
 
4222
			#設置執行失敗
4223
			$result["status"]="false";
4224
 
4225
			#回傳結果
4226
			return $result;
4227
 
4228
			}#if end
226 liveuser 4229
 
3 liveuser 4230
		#初始化要回傳的二維陣列內容
4231
		$result["content"]=array(array());
226 liveuser 4232
 
3 liveuser 4233
		#針對每個要處理的既有一維陣列變數
4234
		foreach($conf["array"] as $index => $firstEle){
226 liveuser 4235
 
3 liveuser 4236
			#如果存在新的欄位指定內容
62 liveuser 4237
			if(isset($conf["newArray"][$index])){
226 liveuser 4238
 
3 liveuser 4239
				#設置新的欄位內容
4240
				$secondEle=$conf["newArray"][$index];
226 liveuser 4241
 
62 liveuser 4242
				}#if end
226 liveuser 4243
 
3 liveuser 4244
			#反之
62 liveuser 4245
			else{
226 liveuser 4246
 
3 liveuser 4247
				#設置新的欄位內容為第一個新的元素
4248
				$secondEle=$conf["newArray"][0];
226 liveuser 4249
 
62 liveuser 4250
				}#else end
226 liveuser 4251
 
3 liveuser 4252
			#設置新的欄位內容
4253
			$row=array($firstEle,$secondEle);
226 liveuser 4254
 
3 liveuser 4255
			#儲存新的欄位內容
4256
			$result["content"][]=$row;
226 liveuser 4257
 
3 liveuser 4258
			}#foreach end
226 liveuser 4259
 
3 liveuser 4260
		#設置執行正常
4261
		$result["status"]="true";
226 liveuser 4262
 
3 liveuser 4263
		#回傳結果
4264
		return $result;
226 liveuser 4265
 
3 liveuser 4266
		}#function addColumn end
4267
 
62 liveuser 4268
		/*
4269
		#函式說明:
4270
		#將陣列的key資訊取出,以方便使用.
4271
		#回傳結果:
4272
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4273
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4274
		#$result["function"],當前執行的函式名稱.
4275
		#$result["argu"],使用的參數.
4276
		#$result["content"],結果陣列.
4277
		#$result["content"]["key"],陣列key數值的陣列.
4278
		#$result["content"]["val"],陣列value的陣列.
4279
		#必填參數:
4280
		#$conf["array"],陣列,要讀取的一維陣列.
4281
		$conf["array"]=array();
4282
		#可省略參數:
4283
		#無.
4284
		#參考資料:
4285
		#無.
4286
		#備註:
4287
		#無.
4288
		*/
4289
		public static function inspectKey(&$conf){
226 liveuser 4290
 
62 liveuser 4291
			#初始化要回傳的結果
4292
			$result=array();
3 liveuser 4293
 
62 liveuser 4294
			#取得當前執行的函數名稱
4295
			$result["function"]=__FUNCTION__;
4296
 
4297
			#如果沒有參數
4298
			if(func_num_args()==0){
4299
 
4300
				#設置執行失敗
4301
				$result["status"]="false";
4302
 
4303
				#設置執行錯誤訊息
4304
				$result["error"]="函數".$result["function"]."需要參數";
4305
 
4306
				#回傳結果
4307
				return $result;
4308
 
4309
				}#if end
4310
 
4311
			#取得參數
4312
			$result["argu"]=$conf;
4313
 
4314
			#如果 $conf 不為陣列
4315
			if(gettype($conf)!=="array"){
4316
 
4317
				#設置執行失敗
4318
				$result["status"]="false";
4319
 
4320
				#設置執行錯誤訊息
4321
				$result["error"][]="\$conf變數須為陣列形態";
4322
 
4323
				#如果傳入的參數為 null
4324
				if($conf===null){
4325
 
4326
					#設置執行錯誤訊息
4327
					$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4328
 
4329
					}#if end
4330
 
4331
				#回傳結果
4332
				return $result;
4333
 
4334
				}#if end
226 liveuser 4335
 
62 liveuser 4336
			#檢查參數
4337
			#函式說明:
4338
			#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
4339
			#回傳結果:
4340
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4341
			#$result["error"],執行不正常結束的錯訊息陣列.
4342
			#$result["simpleError"],簡單表示的錯誤訊息.
4343
			#$result["function"],當前執行的函式名稱.
4344
			#$result["argu"],設置給予的參數.
4345
			#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4346
			#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4347
			#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4348
			#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4349
			#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4350
			#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4351
			#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4352
			#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4353
			#必填參數:
4354
			#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4355
			$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4356
			#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4357
			$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4358
			#可省略參數:
4359
			#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4360
			$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("array");
4361
			#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
4362
			$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
4363
			#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4364
			$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4365
			#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4366
			#$conf["canNotBeEmpty"]=array();
4367
			#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4368
			#$conf["canBeEmpty"]=array();
4369
			#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4370
			#$conf["skipableVariableCanNotBeEmpty"]=array();
4371
			#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4372
			#$conf["skipableVariableName"]=array();
4373
			#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4374
			#$conf["skipableVariableType"]=array();
4375
			#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4376
			#$conf["skipableVarDefaultValue"]=array("");
4377
			#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4378
			#$conf["disallowAllSkipableVarIsEmpty"]="";
4379
			#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4380
			#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4381
			#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
4382
			#$conf["disallowAllSkipableVarNotExist"]="";
4383
			#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4384
			#$conf["arrayCountEqualCheck"][]=array();
4385
			#參考資料:
4386
			#array_keys=>http://php.net/manual/en/function.array-keys.php
4387
			#備註:
4388
			#無.
4389
			$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4390
			unset($conf["variableCheck::checkArguments"]);
226 liveuser 4391
 
62 liveuser 4392
			#若執行失敗
4393
			if($checkArguments["status"]==="false"){
226 liveuser 4394
 
62 liveuser 4395
				#設置執行失敗
4396
				$result["status"]="false";
4397
 
4398
				#設置執行錯誤訊息
4399
				$result["error"]=$checkArguments;
4400
 
4401
				#回傳結果
4402
				return $result;
226 liveuser 4403
 
62 liveuser 4404
				}#if end
226 liveuser 4405
 
62 liveuser 4406
			#若檢查不通過
4407
			if($checkArguments["passed"]==="false"){
226 liveuser 4408
 
62 liveuser 4409
				#設置執行失敗
4410
				$result["status"]="false";
4411
 
4412
				#設置執行錯誤訊息
4413
				$result["error"]=$checkArguments;
4414
 
4415
				#回傳結果
4416
				return $result;
226 liveuser 4417
 
62 liveuser 4418
				}#if end
226 liveuser 4419
 
62 liveuser 4420
			#針對每個元素
4421
			foreach($conf["array"] as $arrayKey => $arrayVal){
226 liveuser 4422
 
62 liveuser 4423
				#儲存 array key
4424
				$result["content"]["key"][]=$arrayKey;
226 liveuser 4425
 
62 liveuser 4426
				#儲存 array value
4427
				$result["content"]["val"][]=$arrayVal;
226 liveuser 4428
 
62 liveuser 4429
				}#foreach end
226 liveuser 4430
 
62 liveuser 4431
			#取得陣列的元素數量
4432
			$result["count"]=count($result["content"]["key"]);
226 liveuser 4433
 
62 liveuser 4434
			#設置執行正常
4435
			$result["status"]="true";
226 liveuser 4436
 
62 liveuser 4437
			#回傳結果
4438
			return $result;
226 liveuser 4439
 
62 liveuser 4440
			}#function inspectKey end
4441
 
4442
	}#class arrays end
4443
 
3 liveuser 4444
?>