Subversion Repositories qbpwcf-lib(archive)

Rev

Rev 915 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 liveuser 1
<?php
2
 
3
/*
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
845 liveuser 6
    Copyright (C) 2015~2025 Min-Jhin,Chen
1 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
 
250 liveuser 26
/*
27
類別說明:
28
跟陣列處理相關的類別.
29
備註:
30
無.
31
*/
1 liveuser 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
	#必填參數:
70 liveuser 108
	#$conf["arrayContent"],陣列,陣列元素的內容,須爲陣列值。
109
	$conf["arrayContent"]=array();
1 liveuser 110
	#可省略參數:
70 liveuser 111
	#$conf["arrayCounts"],字串,爲陣列的元素有幾個,若沒設定,則數量爲$conf["arrayContent"]裏的元素數量.
112
	#$conf["arrayCounts"]="";
113
	#$conf["theSameAs"],字串,若設爲"true",則所有元素內容都跟第一個元素內容相同.
114
	#$conf["theSameAs"]="true";
115
	#參考資料:
116
	#無.
1 liveuser 117
	#備註:
118
	#無.
119
	*/
70 liveuser 120
	public static function create(&$conf){
1 liveuser 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"],當前執行的函數名稱.
70 liveuser 252
	#$result["dataContent"],儲存陣列元素的內容.若指定了key的名稱,則 $result["dataContent"] 會變成 $result["dataContent"]["指定的key名稱"]
253
	#$result["dataCount"],儲存陣列元素的數量.
1 liveuser 254
	#必填參數:
70 liveuser 255
	#$conf["arrayContent"],陣列,陣列變數.
256
	$conf["arrayContent"]=array();
1 liveuser 257
	#可省略參數:
70 liveuser 258
	#$conf["specifiesKeyArray"],陣列,指定key的名稱,須與$conf["arrayContent"]的元素數量相同.
259
	#$conf["specifiesKeyArray"]=array();
260
	#參考資料:
261
	#無.
1 liveuser 262
	#備註:
263
	#無.
264
	*/
70 liveuser 265
	public static function createV2(&$conf){
1 liveuser 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
	#必填參數:
70 liveuser 409
	#$conf["end"],字串/整數,爲整數陣列的結束點.
410
	$conf["end"]="";
1 liveuser 411
	#可省略參數
70 liveuser 412
	#$conf["start"],字串/整數,爲整數陣列的起始點,預設爲從"1"開始。
413
	#$conf["start"]="";
414
	#參考資料
415
	#無.
1 liveuser 416
	#備註:
417
	#無.
418
	*/
70 liveuser 419
	public static function createIntArray(&$conf){
1 liveuser 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
	#必填參數:
70 liveuser 500
	#$conf["end"],字串,爲整數陣列的結束點.
501
	$conf["end"]="";#爲整數陣列的結束點.
1 liveuser 502
	#可省略參數:
70 liveuser 503
	#$conf["stringHead"],字串,陣列內元素內容的前置字串,預設為 "q-".
504
	#$conf["stringHead"]="q-";
505
	#$conf["stringTail"],字串,陣列內元素內容的後置字串,預設為 ".".
506
	#$conf["stringTail"]=".";
507
	#$conf["start"],字串/整數,爲整數陣列的起始點,預設爲從"1"開始.
508
	#$conf["start"]="1";
509
	#參考資料:
510
	#無.
1 liveuser 511
	#備註:
512
	#無.
513
	*/
70 liveuser 514
	public static function createCustomIntArray(&$conf){
1 liveuser 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
	#回傳的結果:
70 liveuser 605
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
606
	#$result["error"],錯誤訊息.
607
	#$result["function"],當前執行的函數名稱.
608
	#$result["newArraysA"],經過整理與同步的陣列變數A.
609
	#$result["newArraysB"],經過整理與同步的陣列變數B.
1 liveuser 610
	#必填參數:
70 liveuser 611
	#$conf["arraysA"],陣列,用來跟陣列變數B比較的陣列變數A.
612
	$conf["arraysA"]=array();
613
	#$conf["arraysB"],陣列,用來跟陣列變數A比較的陣列變數B.
614
	$conf["arraysB"]=array();
1 liveuser 615
	#可省略參數:
616
	#無.
70 liveuser 617
	#參考資料:
618
	#無.
1 liveuser 619
	#備註:
620
	#無.
621
	*/
70 liveuser 622
	public static function compareAndModifyTwoArrays(&$conf){
1 liveuser 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
	#函式說明:
557 liveuser 730
	#將陣列A中存在於陣列B中的元素移除,並重新按照順序排序.
1 liveuser 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
	#必填參數:
70 liveuser 740
	#$conf["arrayA"],陣列,要處理的原始數字陣列.
741
	$conf["arrayA"]=array();
742
	#$conf["arrayB"],陣列,如果arrayA裡面的元素數值有出現在此陣列,則要從A陣列與B陣列中移除.
743
	$conf["arrayB"]=array();
1 liveuser 744
	#可省略參數:
745
	#無.
70 liveuser 746
	#參考資料:
747
	#無.
1 liveuser 748
	#備註:
749
	#用array_diff()可快速得到結果
750
	*/
751
	public static function eraseRepeatedElement(&$conf){
752
 
753
		#初始化要回傳的變數
754
		$result=array();
755
 
756
		#取得當前執行的函數名稱
757
		$result["function"]=__FUNCTION__;
758
 
759
		#如果 $conf 不為陣列
760
		if(gettype($conf)!="array"){
761
 
762
			#設置執行失敗
763
			$result["status"]="false";
764
 
765
			#設置執行錯誤訊息
766
			$result["error"][]="\$conf變數須為陣列形態";
767
 
768
			#如果傳入的參數為 null
769
			if($conf==null){
770
 
771
				#設置執行錯誤訊息
772
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
773
 
774
				}#if end
775
 
776
			#回傳結果
777
			return $result;
778
 
779
			}#if end
780
 
781
		#取得參數
782
		$result["argu"]=$conf;
783
 
784
		#檢查參數
785
		#函式說明:
786
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
787
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
788
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
789
		#$result["function"],當前執行的函式名稱.
790
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
791
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
792
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
793
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
794
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
795
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
796
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
797
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
798
		#必填寫的參數:
799
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
800
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
801
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
802
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("arrayA","arrayB");
803
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
804
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
805
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
806
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
807
		#可以省略的參數:
808
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
809
		#$conf["canBeEmptyString"]="false";
810
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
811
		#$conf["canNotBeEmpty"]=array();
812
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
813
		#$conf["canBeEmpty"]=array();
814
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
815
		#$conf["skipableVariableCanNotBeEmpty"]=array();
816
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
817
		#$conf["skipableVariableName"]=array();
818
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
819
		#$conf["skipableVariableType"]=array();
820
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
821
		#$conf["skipableVarDefaultValue"]=array("");
822
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
823
		#$conf["arrayCountEqualCheck"][]=array();
824
		#參考資料來源:
825
		#array_keys=>http://php.net/manual/en/function.array-keys.php
826
		#建議:
827
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
828
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
829
		unset($conf["variableCheck::checkArguments"]);
830
 
831
		#如果檢查參數失敗
832
		if($checkArguments["status"]==="false"){
833
 
834
			#設置執行失敗
835
			$result["status"]="false";
836
 
837
			#設置執行錯誤訊息
838
			$result["error"]=$checkArguments;
839
 
840
			#回傳結果
841
			return $result;
842
 
843
			}#if end
844
 
845
		#如果參數檢查不過
846
		if($checkArguments["passed"]==="false"){
847
 
848
			#設置執行失敗
849
			$result["status"]="false";
850
 
851
			#設置執行錯誤訊息
852
			$result["error"]=$checkArguments;
853
 
854
			#回傳結果
855
			return $result;
856
 
857
			}#if end
858
 
859
		#剔除掉特定元素的陣列,使用原來陣列的key來儲存.
860
		$result["content"]["byName"]=array();
861
 
862
		#剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
863
		$result["content"]["byNumber"]=array();
864
 
30 liveuser 865
		#如果arrayB沒有內容
565 liveuser 866
		if(count($conf["arrayB"])===0){
867
 
30 liveuser 868
			#直接將arrayA的內容放進去
869
			$result["content"]["byName"]=$conf["arrayA"];
870
 
871
			#針對每隔陣列a
565 liveuser 872
			foreach($conf["arrayA"] as $val){
873
 
30 liveuser 874
				$result["content"]["byNumber"][]=$val;
875
 
565 liveuser 876
				}
877
 
878
			}#if end
29 liveuser 879
 
565 liveuser 880
		else{
30 liveuser 881
			#針對 $conf["arrayA"] 的每個元素
882
			foreach($conf["arrayA"] as $aAk => $aAv){
883
 
29 liveuser 884
				#針對 $conf["arrayB"] 的每個元素
885
				foreach($conf["arrayB"] as $aBk => $aBv){
1 liveuser 886
 
887
					/*
888
					#debug
29 liveuser 889
					echo "\$aAV:".$aAv.PHP_EOL;
890
					echo "\$aBV:".$aBv.PHP_EOL;
1 liveuser 891
					echo "(\$aAv===\$aBv):".($aAv===$aBv).PHP_EOL;
892
					*/
893
 
29 liveuser 894
					#如果arrayA的元素數值存在於陣列arrayB
895
					if($aAv===$aBv){
896
 
897
						/*
898
						#debug
899
						echo "(\$aAv===\$aBv):".($aAv===$aBv).PHP_EOL;
900
						*/
901
 
902
						#移除重複的元素
903
						#unset($conf["arrayA"][$aAk]);
904
						#unset($conf["arrayB"][$aBk]);
905
 
906
						/*
907
						#debug
908
						echo $aAv." repeated, ignore it.".PHP_EOL;
909
						*/
910
 
911
						#跳過
912
						continue 2;
913
 
914
						}#if end
915
 
1 liveuser 916
					/*
917
					#debug
29 liveuser 918
					echo "(\$aAv!==\$aBv):".($aAv!==$aBv).PHP_EOL;
919
					echo "add ".$aAv." ".PHP_EOL;
1 liveuser 920
					*/
29 liveuser 921
 
922
					#如果還沒比較到最後一個
923
					#參考資料:
924
					#array_key_last => https://stackoverflow.com/questions/1070244/how-to-determine-the-first-and-last-iteration-in-a-foreach-loop
925
					if($conf["arrayB"][$aBk]!==$conf["arrayB"][array_key_last($conf["arrayB"])]){
1 liveuser 926
 
29 liveuser 927
						/*
928
						#debug
929
						echo "not last, continue...".PHP_EOL;
930
						*/
1 liveuser 931
 
29 liveuser 932
						#繼續比
933
						continue;
934
 
935
						}#if end					
936
 
937
					#以key取得未重複的元素
938
					$result["content"]["byName"][$aAk]=$aAv;	
1 liveuser 939
 
29 liveuser 940
					#如果IP未重複
941
					if(!in_array($aAv,$result["content"]["byNumber"])){
1 liveuser 942
 
29 liveuser 943
						#重新排列未重複的元素
944
						$result["content"]["byNumber"][]=$aAv;
1 liveuser 945
 
29 liveuser 946
						}#if end
947
 
948
					}#foreach end
1 liveuser 949
 
29 liveuser 950
				}#foreach end
1 liveuser 951
 
30 liveuser 952
			}#else end
953
 
1 liveuser 954
		#設置有剩下未重複的元素
955
		$result["empty"]="false";	
956
 
957
		#如果沒有剩下未重複的元素
958
		if($result["content"]["byName"]===array()){
959
 
960
			#設置沒有剩下未重複的元素
961
			$result["empty"]="true";
962
 
963
			}#if end
964
 
965
		#設置執行正常
966
		$result["status"]="true";
967
 
968
		#回傳結果
969
		return $result;
970
 
971
		}#function eraseRepeatedElement end
972
 
973
	/*
974
	#函式說明:
975
	#將陣列中特定元素剔除,並重新按照順序排序
976
	#回傳的結果:
977
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
978
	#$result["error"],錯誤訊息
979
	#$result["function"],當前執行的函數
980
	#$result["empty"],移除完元素後是否為空陣列,"true"為是,"false"為否.
981
	#$result["content"]["byName"],剔除掉特定元素的陣列,使用原來陣列的key來儲存.
982
	#$result["content"]["byNumber"],剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
983
	#必填參數:
70 liveuser 984
	#$conf["rawInputArray"],陣列,要處理的原始數字陣列.
985
	$conf["rawInputArray"]=array();
986
	#$conf["eraseElementKey"],陣列,要移除的元素key值.
987
	$conf["eraseElementKey"]=array();
1 liveuser 988
	#可省略參數:
989
	#無.
70 liveuser 990
	#參考資料:
991
	#無.
1 liveuser 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
	#必填參數:
70 liveuser 1167
	#$conf["rawInputArray"],陣列,要轉換的陣列變數.
1168
	$conf["rawInputArray"]=array();
1 liveuser 1169
	#可省略參數:
1170
	#無.
70 liveuser 1171
	#參考資料:
1172
	#無.
1 liveuser 1173
	#備註:
1174
	#無.
1175
	*/
70 liveuser 1176
	public static function getKeyAndValue(&$conf){
1 liveuser 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
	#必填參數:
70 liveuser 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();
1 liveuser 1258
	#可省略參數:
1259
	#無.
70 liveuser 1260
	#參考資料:
1261
	#無.
1 liveuser 1262
	#備註:
1263
	#無.
1264
	*/
70 liveuser 1265
	public static function assignVarToArray(&$conf){
1 liveuser 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"]=",";
70 liveuser 1391
	#參考資料:
1392
	#無.
1 liveuser 1393
	#備註:
1394
	#無.
1395
	*/
70 liveuser 1396
	public static function getArrayFromString(&$conf){
1 liveuser 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["content"],合併好的一維陣列.
1542
	#必填參數
1543
	#$conf["inputArray"],陣列,要合併的一維陣列變數,例如:=array($array1,$array2);
1544
	$conf["inputArray"]=array();
1545
	#可省略參數:
1546
	#$conf["allowRepeat"],字串,預設為"true",允許重複的結果;若為"false"則不會出現重複的元素內容.
1547
	#$conf["allowRepeat"]="true";
70 liveuser 1548
	#參考資料:
1549
	#無.
1 liveuser 1550
	#備註:
1551
	#無.
1552
	*/
1553
	public static function mergeArray(&$conf){
1554
 
1555
		#初始化要回傳的結果
1556
		$result=array();
1557
 
1558
		#初始話要回傳的陣列
1559
		$result["content"]=array();
1560
 
1561
		#取得當前執行的涵式
1562
		$result["function"]=__FUNCTION__;
1563
 
1564
		#如果 $conf 不為陣列
1565
		if(gettype($conf)!="array"){
1566
 
1567
			#設置執行失敗
1568
			$result["status"]="false";
1569
 
1570
			#設置執行錯誤訊息
1571
			$result["error"][]="\$conf變數須為陣列形態";
1572
 
1573
			#如果傳入的參數為 null
1574
			if($conf==null){
1575
 
1576
				#設置執行錯誤訊息
1577
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1578
 
1579
				}#if end
1580
 
1581
			#回傳結果
1582
			return $result;
1583
 
1584
			}#if end
1585
 
1586
		#檢查參數
1587
		#函式說明:
1588
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1589
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1590
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1591
		#$result["function"],當前執行的函式名稱.
1592
		#$result["argu"],設置給予的參數.
1593
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1594
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1595
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1596
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
1597
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
1598
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1599
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
1600
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
1601
		#必填寫的參數:
1602
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1603
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1604
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1605
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1606
		#可以省略的參數:
1607
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1608
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
1609
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
1610
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
1611
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
1612
		#$conf["canBeEmptyString"]="false";
1613
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
1614
		#$conf["canNotBeEmpty"]=array();
1615
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
1616
		#$conf["canBeEmpty"]=array();
1617
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
1618
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("logPath");
1619
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1620
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("allowRepeat");
1621
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1622
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1623
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1624
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
1625
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
1626
		#$conf["disallowAllSkipableVarIsEmpty"]="";
1627
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
1628
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
1629
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1630
		#$conf["arrayCountEqualCheck"][]=array();
1631
		#參考資料來源:
1632
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1633
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1634
		unset($conf["variableCheck::checkArguments"]);
1635
 
1636
		#如果檢查參數失敗
1637
		if($checkArguments["status"]==="false"){
1638
 
1639
			#設置執行失敗
1640
			$result["status"]="false";
1641
 
1642
			#設置錯誤訊息
1643
			$result["error"]=$checkArguments;
1644
 
1645
			#回傳結果
1646
			return $result;
1647
 
1648
			}#if end
1649
 
1650
		#如果檢查參數失敗
1651
		if($checkArguments["passed"]==="false"){
1652
 
1653
			#設置執行失敗
1654
			$result["status"]="false";
1655
 
1656
			#設置錯誤訊息
1657
			$result["error"]=$checkArguments;
1658
 
1659
			#回傳結果
1660
			return $result;
1661
 
1662
			}#if end
1663
 
1664
		#針對每組一維陣列
1665
		foreach($conf["inputArray"] as $array){
1666
 
1667
			#針對該一維陣列中的每個元素
1668
			foreach($array as $arrayAdded){
1669
 
1670
				#如果不允許重複的內容
1671
				if($conf["allowRepeat"]==="false"){
1672
 
1673
					#如果有重複了
1674
					if(in_array($arrayAdded,$result["content"])){
1675
 
1676
						#跳到下一個
1677
						continue;
1678
 
1679
						}#if end
1680
 
1681
					}#if end
1682
 
1683
				#將之合併到 $result 陣列裡面
1684
				$result["content"][]=$arrayAdded;
1685
 
1686
				}#foreach end
1687
 
1688
			}#foreach end
1689
 
1690
		#設置執行正常
1691
		$result["status"]="true";
1692
 
1693
		#回傳結果
1694
		return $result;
1695
 
1696
		}#function mergeArray end
1697
 
1698
	/*
1699
	#函式說明:
565 liveuser 1700
	#將多個多維陣列串聯起來,key從0開始排序.
1701
	#回傳的結果:
1702
	#$result["status"],"true"表執行正常,"false"代表執行不正常.
1703
	#$result["error"],錯誤訊息陣列.
1704
	#$result["function"],當前執行的函數.
571 liveuser 1705
	#$result["argu"],使用的參數.
565 liveuser 1706
	#$result["content"],合併好的一維陣列.
1707
	#必填參數
1708
	#$conf["inputArray"],陣列,要合併的一維陣列變數,例如:=array($array1,$array2);
1709
	$conf["inputArray"]=array();
1710
	#可省略參數:
1711
	#$conf["allowRepeat"],字串,預設為"false",不允許重複的結果;反之為"true".
1712
	#$conf["allowRepeat"]="true";
1713
	#$conf["equalKeyStruc"],字串陣列,若 allowRepeat 參數為 "false", 這該參數生效.該參數為用來判斷每個陣列的哪個鍵值路徑底下的數值相同時要進行取代,後者會取代前者.
1714
	#$conf["equalKeyStruc"]=array();
1715
	#參考資料:
1716
	#無.
1717
	#備註:
1718
	#無.
1719
	*/
1720
	public static function mergeMultiDimensionArray(&$conf){
1721
 
1722
		#初始化要回傳的結果
1723
		$result=array();
1724
 
1725
		#初始話要回傳的陣列
1726
		$result["content"]=array();
1727
 
1728
		#取得當前執行的涵式
1729
		$result["function"]=__FUNCTION__;
1730
 
1731
		#如果 $conf 不為陣列
1732
		if(gettype($conf)!="array"){
1733
 
1734
			#設置執行失敗
1735
			$result["status"]="false";
1736
 
1737
			#設置執行錯誤訊息
1738
			$result["error"][]="\$conf變數須為陣列形態";
1739
 
1740
			#如果傳入的參數為 null
1741
			if($conf==null){
1742
 
1743
				#設置執行錯誤訊息
1744
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1745
 
1746
				}#if end
1747
 
1748
			#回傳結果
1749
			return $result;
1750
 
1751
			}#if end
1752
 
571 liveuser 1753
		#儲存使用的參數
1754
		$result["argu"]=$conf;
1755
 
565 liveuser 1756
		#檢查參數
1757
		#函式說明:
1758
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1759
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1760
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1761
		#$result["function"],當前執行的函式名稱.
1762
		#$result["argu"],設置給予的參數.
1763
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1764
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1765
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1766
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
1767
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
1768
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1769
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
1770
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
1771
		#必填寫的參數:
1772
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1773
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1774
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1775
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1776
		#可以省略的參數:
1777
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1778
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
1779
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
1780
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
1781
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
1782
		#$conf["canBeEmptyString"]="false";
1783
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
1784
		#$conf["canNotBeEmpty"]=array();
1785
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
1786
		#$conf["canBeEmpty"]=array();
1787
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
1788
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("logPath");
1789
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1790
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("allowRepeat","equalKeyStruc");
1791
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1792
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","array");
1793
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1794
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false",null);
1795
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
1796
		#$conf["disallowAllSkipableVarIsEmpty"]="";
1797
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
1798
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
1799
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1800
		#$conf["arrayCountEqualCheck"][]=array();
1801
		#參考資料來源:
1802
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1803
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1804
		unset($conf["variableCheck::checkArguments"]);
1805
 
1806
		#如果檢查參數失敗
1807
		if($checkArguments["status"]==="false"){
1808
 
1809
			#設置執行失敗
1810
			$result["status"]="false";
1811
 
1812
			#設置錯誤訊息
1813
			$result["error"]=$checkArguments;
1814
 
1815
			#回傳結果
1816
			return $result;
1817
 
1818
			}#if end
1819
 
1820
		#如果檢查參數失敗
1821
		if($checkArguments["passed"]==="false"){
1822
 
1823
			#設置執行失敗
1824
			$result["status"]="false";
1825
 
1826
			#設置錯誤訊息
1827
			$result["error"]=$checkArguments;
1828
 
1829
			#回傳結果
1830
			return $result;
1831
 
1832
			}#if end
1833
 
1834
		#針對每組一維陣列
1835
		foreach($conf["inputArray"] as $array){
1836
 
571 liveuser 1837
			#如果是空陣列
1838
			if(empty($array)){
1839
 
1840
				#跳過之
1841
				continue;
1842
 
1843
				}#if end
1844
 
565 liveuser 1845
			#針對該一維陣列中的每個元素
1846
			foreach($array as $arrayAdded){
1847
 
1848
				#如果不允許重複的內容
1849
				if($conf["allowRepeat"]==="false"){
1850
 
1851
					#如果有指定 key 階層
1852
					if(isset($conf["equalKeyStruc"])){
1853
 
1854
						#初始化儲存用來比對是否相符的變數
571 liveuser 1855
						$valInArray=$arrayAdded;
570 liveuser 1856
 
1857
						#debug
1858
						#var_dump(__LINE__,$valInArray);
565 liveuser 1859
 
1860
						#針對每個 key 階層
1861
						foreach($conf["equalKeyStruc"] as $keyLayer){
570 liveuser 1862
 
1863
							#如果沒有該階層
1864
							if(!isset($valInArray[$keyLayer])){
1865
 
571 liveuser 1866
								#換看下個元素
1867
								continue 2;
1868
 
570 liveuser 1869
								}#if end
1870
 
565 liveuser 1871
							#取得對應key的內容
1872
							$valInArray=$valInArray[$keyLayer];
1873
 
1874
							}#foreach end
1875
 
1876
						#預設要新增
1877
						$add=true;
1878
 
1879
						#針對已經合併好的陣列中的每個元素
1880
						foreach($result["content"] as $index => $val){
1881
 
1882
							#針對每個 key 階層
1883
							foreach($conf["equalKeyStruc"] as $keyLayer){
1884
 
1885
								#取得對應key的內容
1886
								$val=$val[$keyLayer];
1887
 
1888
								}#foreach end
1889
 
1890
							#如果遇到新的相同內容
1891
							if($val===$valInArray){
1892
 
1893
								#用新的取代舊的
1894
								$result["content"][$index]=$array;
1895
 
1896
								#設置不用新增
1897
								$add=false;
1898
 
1899
								}#if end
1900
 
1901
							}#foreach end
1902
 
1903
						#如果要新增
1904
						if($add){
1905
 
1906
							#新增之
570 liveuser 1907
							$result["content"][]=$arrayAdded;
1908
 
1909
							#debug
1910
							#var_dump(__LINE__,$result["content"]);
571 liveuser 1911
 
1912
							#跳到下一個
1913
							continue;
565 liveuser 1914
 
1915
							}#if end						
1916
 
1917
						}#if end
1918
 
1919
					#反之如果有重複了
1920
					else if(in_array($arrayAdded,$result["content"])){
1921
 
1922
						#跳到下一個
1923
						continue;
1924
 
1925
						}#if end
1926
 
1927
					}#if end
1928
 
1929
				#將之合併到 $result 陣列裡面
1930
				$result["content"][]=$arrayAdded;
1931
 
1932
				}#foreach end
1933
 
1934
			}#foreach end
1935
 
1936
		#設置執行正常
1937
		$result["status"]="true";
1938
 
1939
		#回傳結果
1940
		return $result;		
1941
 
1942
		}#function mergeMultiDimensionArray end
1943
 
1944
	/*
1945
	#函式說明:
1 liveuser 1946
	#透過多個擁有一樣數量元素的一維陣列,透過指定的連接字串,組成一組同樣數量的一維陣列。
1947
	#回傳結果:
1948
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常。
1949
	#$result["error"],錯誤訊息。
1950
	#$result["content"],組合成新值的一維陣列。
1951
	#$result["function"],當前執行的函數名稱。
1952
	#$result["argu"],使用的參數.
1953
	#必填參數:
1954
	#$conf["arrays"],二維陣列,爲要依序由哪些陣列變數來進行組合
1955
	$conf["arrays"]=array();
1956
	#可省略參數:
1957
	#$conf["combineSymbolArray"],陣列字串,數量爲$conf["arrays"]減一,爲用於連結各一維陣列變數的連接字串,預設皆爲"<=>"。
1958
	#$conf["combineSymbolArray"]=array();
70 liveuser 1959
	#參考資料:
1960
	#無.
1 liveuser 1961
	#備註:
1962
	#無.
1963
	*/
1964
	public static function combineToNewArray(&$conf){
1965
 
1966
		#初始化要回傳的變數
1967
		$result=array();
1968
 
1969
		#初始化儲存合併好的一維陣列
1970
		$result["content"]=array();
1971
 
1972
		#取得當前執行的函數名稱
1973
		$result["function"]=__FUNCTION__;
1974
 
1975
		#取得參數
1976
		$result["argu"]=$conf;
1977
 
1978
		#如果 $conf 不為陣列
1979
		if(gettype($conf)!="array"){
1980
 
1981
			#設置執行失敗
1982
			$result["status"]="false";
1983
 
1984
			#設置執行錯誤訊息
1985
			$result["error"][]="\$conf變數須為陣列形態";
1986
 
1987
			#如果傳入的參數為 null
1988
			if($conf==null){
1989
 
1990
				#設置執行錯誤訊息
1991
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1992
 
1993
				}#if end
1994
 
1995
			#回傳結果
1996
			return $result;
1997
 
1998
			}#if end
1999
 
2000
		#函式說明:
2001
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2002
		#回傳的結果:
2003
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2004
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2005
		#$result["function"],當前執行的函式名稱.
2006
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2007
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2008
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2009
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2010
		#必填寫的參數:
2011
		$conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
2012
		$conf["variableCheck.isexistMulti"]["variableCheck"]=array("arrays");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2013
		#可以省略的參數:
2014
		$conf["variableCheck.isexistMulti"]["variableType"]=array("array");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
2015
		$conf["variableCheck.isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2016
		$checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
2017
		unset($conf["variableCheck.isexistMulti"]);
2018
 
2019
		#如果檢查出錯
2020
		if($checkResult["status"]=="false"){
2021
 
2022
			#設置執行不正常
2023
			$result["status"]="false";
2024
 
2025
			#設置錯誤訊息
2026
			$result["erorr"]=$checkResult;
2027
 
2028
			#回傳結果
2029
			return $result;
2030
 
2031
			}#if end
2032
 
2033
		#如果檢查不通過
2034
		if($checkResult["passed"]=="false"){
2035
 
2036
			#設置執行不正常
2037
			$result["status"]="false";
2038
 
2039
			#設置錯誤訊息
2040
			$result["erorr"]=$checkResult;
2041
 
2042
			#回傳結果
2043
			return $result;
2044
 
2045
			}#if end
2046
 
2047
		#函式說明:
2048
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
2049
		#回傳結果:
2050
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2051
		#$result["error"],錯誤訊息陣列.
2052
		#$result["function"],當前執行的函式名稱.
2053
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
2054
		#必填參數:
2055
		#$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
2056
		$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf;
2057
		#$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
2058
		$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array("arrays");
2059
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
2060
		$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array("array");
2061
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
2062
		$argu=&$conf;
2063
		#可省略參數:
2064
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,"null"代表不指定.
2065
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array("",);
2066
		#無
2067
		$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
2068
		unset($conf["variableCheck.checkSkipableVarType"]);
2069
 
2070
		#如果檢查出錯
2071
		if($checkResult["status"]=="false"){
2072
 
2073
			#設置執行不正常
2074
			$result["status"]="false";
2075
 
2076
			#設置錯誤訊息
2077
			$result["erorr"]=$checkResult;
2078
 
2079
			#回傳結果
2080
			return $result;
2081
 
2082
			}#if end
2083
 
2084
		#如果檢查不通過
2085
		if($checkResult["passed"]=="false"){
2086
 
2087
			#設置執行不正常
2088
			$result["status"]="false";
2089
 
2090
			#設置錯誤訊息
2091
			$result["erorr"]=$checkResult;
2092
 
2093
			#回傳結果
2094
			return $result;
2095
 
2096
			}#if end
2097
 
2098
		#如果 $conf["combineSymbolArray"] 沒有設定
2099
		if(!isset($conf["combineSymbolArray"])){
2100
 
2101
			#執行迴圈 count($conf["arrays"]) 次
2102
			for($i=0;$i<count($conf["arrays"]);$i++){
2103
 
2104
				#預設爲 "<=>"
2105
				$conf["combineSymbolArray"][]="<=>";
2106
 
2107
				}#for end
2108
 
2109
			}#if end
2110
 
2111
		#執行 count($conf["arrays"][0]) 次迴圈
2112
		for($i=0;$i<count($conf["arrays"][0]);$i++){
2113
 
2114
			#執行迴圈 count($conf["arrays"]) 次
2115
			for($j=0;$j<count($conf["arrays"]);$j++){
2116
 
2117
				#如果不是第一個陣列
2118
				if($j!=0){
2119
 
2120
					#取得新陣列的元素與連接字串
2121
					$result["content"][$i]=$result["content"][$i].$conf["combineSymbolArray"][$j-1].$conf["arrays"][$j][$i];
2122
 
2123
					}#if end
2124
 
2125
				#反之是第一個陣列
2126
				else{
2127
 
2128
					#取得新陣列的元素
2129
					$result["content"][$i]=$conf["arrays"][$j][$i];
2130
 
2131
					}#else end
2132
 
2133
				}#for end
2134
 
2135
			}#for end
2136
 
2137
		#執行到這邊代表執行正常
2138
		$result["status"]="true";
2139
 
2140
		#回傳結果
2141
		return $result;
2142
 
2143
		}#function combineToNewArray end
2144
 
2145
	/*
2146
	#函式說明:
2147
	#將陣列倒置.
2148
	#回傳的結果:
2149
	#$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗.
2150
	#$result["error"],錯誤訊息陣列.
2151
	#$result["function"],當前執行的函數名稱.
2152
	#$result["convertArray"],轉置後的陣列內容.
2153
	#必填參數:
70 liveuser 2154
	#$conf["inputArray"],陣列,要倒置的陣列.
2155
	$conf["inputArray"]=array();
1 liveuser 2156
	#可省略參數:
2157
	#無.
70 liveuser 2158
	#參考資料:
2159
	#無.
1 liveuser 2160
	#備註:
2161
	#參考資料來源 http://tw2.php.net/array_reverse => 陣列倒置的內建涵式.
2162
	*/
70 liveuser 2163
	public static function convertArray(&$conf){
1 liveuser 2164
 
2165
		#初始化要回傳的內容
2166
		$result=array();
2167
 
2168
		#取得當前執行的函數名稱
2169
		$result["function"]=__FUNCTION__;
2170
 
2171
		#如果 $conf 不為陣列
2172
		if(gettype($conf)!="array"){
2173
 
2174
			#設置執行失敗
2175
			$result["status"]="false";
2176
 
2177
			#設置執行錯誤訊息
2178
			$result["error"][]="\$conf變數須為陣列形態";
2179
 
2180
			#如果傳入的參數為 null
2181
			if($conf==null){
2182
 
2183
				#設置執行錯誤訊息
2184
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2185
 
2186
				}#if end
2187
 
2188
			#回傳結果
2189
			return $result;
2190
 
2191
			}#if end
2192
 
2193
		#函式說明:
2194
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2195
		#回傳的結果:
2196
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2197
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2198
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2199
		#必填寫的參數:
2200
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
2201
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("inputArray");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2202
		#可以省略的參數:
2203
		#$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
2204
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2205
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
2206
		unset($conf["variableCheck"]["isexistMuti"]);
2207
 
2208
		#如果檢查失敗
2209
		if($checkResult["status"]=="false"){
2210
 
2211
			#設置執行不正常
2212
			$result["status"]="false";
2213
 
2214
			#設置執行錯誤訊息
2215
			$result["error"]=$checkResult;
2216
 
2217
			#回傳結果
2218
			return $result;
2219
 
2220
			}#if end
2221
 
2222
		#如果檢查不通過
2223
		if($checkResult["passed"]=="false"){
2224
 
2225
			#設置執行不正常
2226
			$result["status"]="false";
2227
 
2228
			#設置執行錯誤訊息
2229
			$result["error"]=$checkResult;
2230
 
2231
			#回傳結果
2232
			return $result;
2233
 
2234
			}#if end
2235
 
2236
		#取得轉置後的內容
2237
		$result["convertArray"]=array_reverse($conf["inputArray"]);
2238
 
2239
		#值行到這邊執行成功
2240
		$result["status"]="true";
2241
 
2242
		#回傳節果
2243
		return $result;
2244
 
2245
		}#function convertArray end
2246
 
2247
	/*
2248
	#函式說明:
2249
	#將一陣列每個元素間插入一個特定的元素
2250
	#回傳的結果:
2251
	#$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗
2252
	#$result["error"],錯誤訊息陣列.
2253
	#$result["function"],當前執行的函數
2254
	#$result["content"],插入完元素的新陣列.
2255
	#必填參數:
70 liveuser 2256
	#$conf["inputArray"],陣列,要處理的陣列變數.
1 liveuser 2257
	$conf["inputArray"]=array();
2258
	#$conf["insertElement"],字串,要加入的元素.
2259
	$conf["insertElement"]="";
2260
	#可省略參數:
70 liveuser 2261
	#無.
2262
	#參考資料:
2263
	#無.
1 liveuser 2264
	#備註:
2265
	#無.
2266
	*/
70 liveuser 2267
	public static function insertElementBetweenElements(&$conf){
1 liveuser 2268
 
2269
		#初始化要回傳的結果
2270
		$result=array();
2271
 
2272
		#取得當前執行的函數名稱
2273
		$result["function"]=__FUNCTION__;
2274
 
2275
		#如果 $conf 不為陣列
2276
		if(gettype($conf)!="array"){
2277
 
2278
			#設置執行失敗
2279
			$result["status"]="false";
2280
 
2281
			#設置執行錯誤訊息
2282
			$result["error"][]="\$conf變數須為陣列形態";
2283
 
2284
			#如果傳入的參數為 null
2285
			if($conf==null){
2286
 
2287
				#設置執行錯誤訊息
2288
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2289
 
2290
				}#if end
2291
 
2292
			#回傳結果
2293
			return $result;
2294
 
2295
			}#if end
2296
 
2297
		#檢查參數
2298
		#函式說明:
2299
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2300
		#回傳的結果:
2301
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2302
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2303
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2304
		#必填寫的參數:
2305
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
2306
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("inputArray","insertElement");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2307
		#可以省略的參數:
2308
		$conf["variableType"]=array("array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
2309
		$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2310
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
2311
		unset($conf["variableCheck"]["isexistMuti"]);
2312
 
2313
		#如果檢查失敗
2314
		if($checkResult["status"]=="false"){
2315
 
2316
			#設置錯誤識別
2317
			$result["status"]="false";
2318
 
2319
			#設置錯誤訊息
2320
			$result["error"]=$checkResult;
2321
 
2322
			#回傳結果
2323
			return $result;
2324
 
2325
			}#if end
2326
 
2327
		#如果檢查不通過
2328
		if($checkResult["passed"]=="false"){
2329
 
2330
			#設置錯誤識別
2331
			$result["status"]="false";
2332
 
2333
			#設置錯誤訊息
2334
			$result["error"]=$checkResult;
2335
 
2336
			#回傳結果
2337
			return $result;
2338
 
2339
			}#if end
2340
 
2341
		#複製原始的陣列
2342
		$oriArray=$conf["inputArray"];
2343
 
2344
		#初始化暫存和合併後的新陣列變數
2345
		$newCombinedArray=array();
2346
 
2347
		#執行 count($oriArray) 次迴圈
2348
		for($j=0;$j<count($oriArray);$j++){
2349
 
2350
			#取得原始陣列的一個元素
2351
			$newCombinedArray[]=$oriArray[$j];
2352
 
2353
			#如果 不是最後一個原始陣列的元素
2354
			if($j!=count($oriArray)-1){
2355
 
2356
				#放置一個元素到陣列裡面
2357
				$newCombinedArray[]=$conf["insertElement"];
2358
 
2359
				}#if end
2360
 
2361
			}#for end
2362
 
2363
		#取得插入完元素的陣列
2364
		$result["content"]=$newCombinedArray;
2365
 
2366
		#設置執行正常的識別
2367
		$result["status"]="true";
2368
 
2369
		#回傳結果
2370
		return $result;
2371
 
2372
		}#function insertElementBetweenElements end
2373
 
2374
	/*
2375
	#函式說明:
2376
	#將特定符號間隔的字串"a,b,c"變成陣列.
2377
	#回傳的結果:
2378
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2379
	#$result["function"],當前執行的function名稱.
2380
	#$result["argu"],使用的參數.
2381
	#$result["error"],錯誤訊息陣列.
2382
	#$result["content"],處理好的內容.
2383
	#必填參數:
2384
	#$conf["inputStr"],字串,要轉一維陣列的字串
2385
	$conf["inputStr"]="";
2386
	#可省略參數:
2387
	#$conf["spiltSymbol"],字串,用來區隔字串的符號,預設為","
2388
	#$conf["spiltSymbol"]=",";
70 liveuser 2389
	#參考資料:
2390
	#無.
1 liveuser 2391
	#備註:
2392
	#無.
2393
	*/
2394
	public static function stringToArray(&$conf){
2395
 
2396
		#初始化要回傳的變數
2397
		$result=array();
2398
 
2399
		#初始化當前執行的函數名稱
2400
		$result["funciton"]=__FUNCTION__;
2401
 
2402
		#如果 $conf 不為陣列
2403
		if(gettype($conf)!="array"){
2404
 
2405
			#設置執行失敗
2406
			$result["status"]="false";
2407
 
2408
			#設置執行錯誤訊息
2409
			$result["error"][]="\$conf變數須為陣列形態";
2410
 
2411
			#如果傳入的參數為 null
2412
			if($conf==null){
2413
 
2414
				#設置執行錯誤訊息
2415
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2416
 
2417
				}#if end
2418
 
2419
			#回傳結果
2420
			return $result;
2421
 
2422
			}#if end
2423
 
2424
		#取得使用的參數
2425
		$result["argu"]=$conf;
2426
 
2427
		#檢查參數
2428
		#函式說明:
2429
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2430
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2431
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2432
		#$result["function"],當前執行的函式名稱.
2433
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2434
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2435
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2436
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2437
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2438
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
2439
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
2440
		#必填寫的參數:
2441
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2442
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2443
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2444
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputStr");
2445
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
2446
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
2447
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2448
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2449
		#可以省略的參數:
2450
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
2451
		#$conf["canBeEmptyString"]="false";
2452
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2453
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("spiltSymbol");
2454
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
2455
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
2456
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2457
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(",");
2458
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2459
		#$conf["arrayCountEqualCheck"][]=array();
2460
		#參考資料來源:
2461
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2462
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2463
		unset($conf["variableCheck::checkArguments"]);
2464
 
2465
		#如果檢查有誤
2466
		if($checkResult["status"]=="false"){
2467
 
2468
			#設置錯誤識別
2469
			$result["status"]="false";
2470
 
2471
			#設置錯誤訊息
2472
			$result["error"]=$checkResult;
2473
 
2474
			#回傳結果
2475
			return $result;
2476
 
2477
			}#if end
2478
 
2479
		#如果檢查不通過
2480
		if($checkResult["passed"]=="false"){
2481
 
2482
			#設置錯誤識別
2483
			$result["status"]="false";
2484
 
2485
			#設置錯誤訊息
2486
			$result["error"]=$checkResult;
2487
 
2488
			#回傳結果
2489
			return $result;
2490
 
2491
			}#if end
2492
 
2493
		#函式說明:
2494
		#將固定格式的字串分開,並回傳分開的結果。
2495
		#回傳結果:
2496
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2497
		#$result["error"],錯誤訊息陣列
2498
		#$result["function"],當前執行的函數名稱.
2499
		#$result["argu"],使用的參數.
2500
		#$result["oriStr"],要分割的原始字串內容
2501
		#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
2502
		#$result["dataCounts"],爲總共分成幾段
2503
		#$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
2504
		#必填參數:
2505
		$conf["stringProcess::spiltString"]["stringIn"]=$conf["inputStr"];#要處理的字串。
2506
		$conf["stringProcess::spiltString"]["spiltSymbol"]=$conf["spiltSymbol"];#爲以哪個符號作爲分割
2507
		#可省略參數:
2508
		#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
2509
		$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
2510
		$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
2511
		unset($conf["stringProcess::spiltString"]);
2512
 
2513
		#如果分割字串失敗
2514
		if($spiltString["status"]==="false"){
2515
 
2516
			#設置錯誤識別
2517
			$result["status"]="false";
2518
 
2519
			#設置錯誤訊息
2520
			$result["error"]=$spiltString;
2521
 
2522
			#回傳結果
2523
			return $result;
2524
 
2525
			}#if end
2526
 
2527
		#取得分割好的字串陣列
2528
		$result["content"]=$spiltString["dataArray"];
2529
 
2530
		#設置執行正常
2531
		$result["status"]="true";
2532
 
2533
		#回傳結果
2534
		return $result;
2535
 
2536
		}#function stringToArray end
2537
 
2538
	/*
2539
	#函式說明:
2540
	#將一維陣列轉換為用特定符號間隔的字串,ex:array("1","2","3") to "a;b;c;".
2541
	#回傳的結果:
2542
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2543
	#$result["function"],當前執行的function名稱
2544
	#$result["error"],錯誤訊息陣列.
2545
	#$result["content"],處理好的字串.
2546
	#$result["argu"],使用的參數.
2547
	#必填參數:
2548
	#$conf["inputArray"],字串陣列,要轉成字串的一維陣列.
2549
	$conf["inputArray"]=array();
2550
	#可省略參數:
2551
	#$conf["spiltSymbol"],字串,用來區隔字串的符號,預設為;
2552
	#$conf["spiltSymbol"]=";";
2553
	#$conf["skipEnd"],字串,結尾是否不要加上符號,預設為"false",要加上符號,"true"代表不要加上符號。
2554
	#$conf["skipEnd"]="";
671 liveuser 2555
	#$conf["spiltSymbolAtStart"],字串,是否要在開頭加上spiltSymbol,預設為"false",代表不要;反之為“true”.
2556
	#$conf["spiltSymbolAtStart"]="";
70 liveuser 2557
	#參考資料:
2558
	#無.
1 liveuser 2559
	#備註:
2560
	#無.
2561
	*/
2562
	public static function arrayToString(&$conf){
2563
 
2564
		#初始化要回傳的變數
2565
		$result=array();
2566
 
2567
		#初始化當前執行的函數名稱
2568
		$result["funciton"]=__FUNCTION__;
2569
 
2570
		#如果 $conf 不為陣列
2571
		if(gettype($conf)!="array"){
2572
 
2573
			#設置執行失敗
2574
			$result["status"]="false";
2575
 
2576
			#設置執行錯誤訊息
2577
			$result["error"][]="\$conf變數須為陣列形態";
2578
 
2579
			#如果傳入的參數為 null
2580
			if($conf==null){
2581
 
2582
				#設置執行錯誤訊息
2583
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2584
 
2585
				}#if end
2586
 
2587
			#回傳結果
2588
			return $result;
2589
 
2590
			}#if end
2591
 
2592
		#取得使用的參數
2593
		$result["argu"]=$conf;
2594
 
671 liveuser 2595
		#函式說明:
2596
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
2597
		#回傳結果:
2598
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2599
		#$result["error"],執行不正常結束的錯訊息陣列.
2600
		#$result["simpleError"],簡單表示的錯誤訊息.
2601
		#$result["function"],當前執行的函式名稱.
2602
		#$result["argu"],設置給予的參數.
2603
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2604
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2605
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2606
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
2607
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
2608
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2609
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
2610
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
2611
		#必填參數:
2612
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
672 liveuser 2613
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
671 liveuser 2614
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
672 liveuser 2615
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
671 liveuser 2616
		#可省略參數:
2617
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
672 liveuser 2618
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
671 liveuser 2619
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
672 liveuser 2620
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
671 liveuser 2621
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
672 liveuser 2622
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
671 liveuser 2623
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
2624
		#$conf["canNotBeEmpty"]=array();
2625
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
2626
		#$conf["canBeEmpty"]=array();
2627
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
709 liveuser 2628
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("skipEnd","spiltSymbolAtStart");
671 liveuser 2629
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
672 liveuser 2630
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("spiltSymbol","skipEnd","spiltSymbolAtStart");
671 liveuser 2631
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
672 liveuser 2632
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string");
671 liveuser 2633
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
672 liveuser 2634
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(";","false","false");
671 liveuser 2635
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
2636
		#$conf["variadbleCheck::checkArguments"]["disallowAllSkipableVarIsEmpty"]="";
2637
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
2638
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
2639
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
2640
		#$conf["disallowAllSkipableVarNotExist"]="";
2641
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2642
		#$conf["arrayCountEqualCheck"][]=array();
2643
		#參考資料:
2644
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2645
		#備註:
2646
		#無.
672 liveuser 2647
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2648
		unset($conf["variableCheck::checkArguments"]);
671 liveuser 2649
 
2650
		#如果執行失敗
2651
		if($checkArguments["status"]==="false"){
2652
 
2653
			#設置執行錯誤的識別
1 liveuser 2654
			$result["status"]="false";
2655
 
2656
			#設置錯誤訊息
671 liveuser 2657
			$result["error"]=$checkArguments;
1 liveuser 2658
 
2659
			#回傳結果
2660
			return $result;
671 liveuser 2661
 
1 liveuser 2662
			}#if end
671 liveuser 2663
 
2664
		#如果檢查不通過
2665
		if($checkArguments["passed"]==="false"){
2666
 
2667
			#設置執行錯誤的識別
1 liveuser 2668
			$result["status"]="false";
2669
 
2670
			#設置錯誤訊息
671 liveuser 2671
			$result["error"]=$checkArguments;
1 liveuser 2672
 
2673
			#回傳結果
2674
			return $result;
671 liveuser 2675
 
1 liveuser 2676
			}#if end
671 liveuser 2677
 
2678
		#初始化 $result["content"]
2679
		$result["content"]="";
1 liveuser 2680
 
671 liveuser 2681
		#如果開頭就要放置分割的字串
2682
		if($conf["spiltSymbolAtStart"]==="true"){
2683
 
2684
			#串接分割的字串
2685
			$result["content"]=$result["content"].$conf["spiltSymbol"];
2686
 
1 liveuser 2687
			}#if end
2688
 
2689
		#紀錄總共有幾個變數
2690
		$Tcount=count($conf["inputArray"]);
2691
 
2692
		#暫存計數的變數
2693
		$count=0;
2694
 
2695
		#$conf["inputArray"]陣列有幾個元素就執行幾次
2696
		foreach($conf["inputArray"] as $elementValue){
2697
 
2698
			#計數
2699
			$count++;
2700
 
274 liveuser 2701
			#如果要串接的內容不為字串
277 liveuser 2702
			if(gettype($elementValue)!=="string"){
274 liveuser 2703
 
2704
				#設置錯誤識別
2705
				$result["status"]="false";
2706
 
2707
				#設置錯誤訊息
2708
				$result["error"][]="要串接的內容須為字串";
2709
 
2710
				#設置錯誤訊息
2711
				$result["error"][]=$elementValue;
276 liveuser 2712
 
2713
				#設置錯誤訊息
2714
				$result["error"][]="wrong type is ".gettype($elementValue);
274 liveuser 2715
 
2716
				#回傳結果
2717
				return $result;
2718
 
2719
				}#if end
2720
 
1 liveuser 2721
			#如果是最後一個
2722
			if($count===$Tcount && $conf["skipEnd"]==="true"){
2723
 
2724
				#組合字串
2725
				$result["content"]=$result["content"].$elementValue;
2726
 
2727
				}#if end
2728
 
2729
			#反之
2730
			else{
2731
 
2732
				#組合字串
2733
				$result["content"]=$result["content"].$elementValue.$conf["spiltSymbol"];
2734
 
2735
				}#else
2736
 
2737
			}#foreach end
2738
 
2739
		#設置執行結果正常
2740
		$result["status"]="true";
2741
 
2742
		#回傳結果
2743
		return $result;
2744
 
2745
		}#funciton arrayToString
2746
 
2747
	/*
2748
	#函式說明:
2749
	#傳參考來交換兩變數
2750
	#回傳結果:
2751
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2752
	#$result["function"],當前執行的function名稱
2753
	#$result["error"],錯誤訊息陣列.
2754
	#必填參數:
70 liveuser 2755
	#$conf["num1"],參考變數,要交換的變數1。
1 liveuser 2756
	$conf["num1"]=&;
2757
	#$conf["num2"],參考變數,要交換的變數2。
2758
	$conf["num2"]=&;
2759
	#可省略參數:
2760
	#無.
70 liveuser 2761
	#參考資料:
2762
	#無.
1 liveuser 2763
	#備註:
2764
	#無.
2765
	*/
2766
	public static function swapByReference(&$conf){
2767
 
2768
		#初始化要回傳的結果
2769
		$result=array();
2770
 
2771
		#取得當前函數名稱
2772
		$result["function"]=__FUNCTION__;
2773
 
2774
		#如果 $conf 不為陣列
2775
		if(gettype($conf)!="array"){
2776
 
2777
			#設置執行失敗
2778
			$result["status"]="false";
2779
 
2780
			#設置執行錯誤訊息
2781
			$result["error"][]="\$conf變數須為陣列形態";
2782
 
2783
			#如果傳入的參數為 null
2784
			if($conf==null){
2785
 
2786
				#設置執行錯誤訊息
2787
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2788
 
2789
				}#if end
2790
 
2791
			#回傳結果
2792
			return $result;
2793
 
2794
			}#if end
2795
 
2796
		#檢查參數
2797
		#函式說明:
2798
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2799
		#回傳的結果:
2800
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2801
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2802
		#$result["function"],當前執行的函式名稱.
2803
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2804
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2805
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2806
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2807
		#必填寫的參數:
2808
		$conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
2809
		$conf["variableCheck.isexistMulti"]["variableCheck"]=array("num1","num2");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2810
		#可以省略的參數:
2811
		#$conf["variableCheck.isexistMulti"]["variableType"]=array("array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
2812
		$conf["variableCheck.isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2813
		$checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
2814
		unset($conf["variableCheck.isexistMulti"]);
2815
 
2816
		#如果 $checkResult["status"] 為 "false"
2817
		if($checkResult["status"]=="false"){
2818
 
2819
			#設置錯誤識別
2820
			$result["status"]="false";
2821
 
2822
			#設置發生錯誤的函式
2823
			$result["error"]=$checkResult;
2824
 
2825
			#回傳結果
2826
			return $result;
2827
 
2828
			}#if end
2829
 
2830
		#如果 $checkResult["passed"] 為 "false"
2831
		if($checkResult["passed"]=="false"){
2832
 
2833
			#設置錯誤識別
2834
			$result["status"]="false";
2835
 
2836
			#設置發生錯誤的函式
2837
			$result["error"]=$checkResult;
2838
 
2839
			#回傳結果
2840
			return $result;
2841
 
2842
			}#if end
2843
 
2844
		#將第一個變數存在 $tmp 裡面
2845
		$tmp=$conf["num1"];
2846
 
2847
		#將第一個變數用第二個變數取代
2848
		$conf["num1"]=$conf["num2"];
2849
 
2850
		#將第二個變數用第一個變數取代
2851
		$conf["num2"]=$tmp;
2852
 
2853
		#執行到這邊代表正常
2854
		$result["status"]="true";
2855
 
2856
		#回傳結果
2857
		return $result;
2858
 
2859
		}#function swapByReference end
2860
 
2861
	/*
2862
	#函式說明:
2863
	#排序含有多資訊的二維陣列
2864
	#回傳結果:
2865
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2866
	#$result["function"],當前執行的function名稱
2867
	#$result["error"],錯誤訊息陣列.
2868
	#$result["content"],處理好的字串.
2869
	#必填參數:
2870
	#$conf["unArrangeArray"],參考二維陣列,要的排序二維陣列。
2871
	$conf["unArrangeArray"]=&;
2872
	#$conf["compareKey"],字串,儲存用來比較大小的一維陣列key名稱。
2873
	$conf["compareKey"]=;
2874
	#可省參數:
2875
	#$conf["type"],字串,排序的類型,"asc"代表遞增,"desc"代表遞減,預設為"desc"。
2876
	$conf["type"]="desc";
2877
	#可省略參數:
2878
	#無.
70 liveuser 2879
	#參考資料:
2880
	#無.
1 liveuser 2881
	#備註:
2882
	#排序有錯.
2883
	*/
2884
	public static function arrangeTwoDmensionArray(&$conf){
2885
 
2886
		#初始化要回傳的變數
2887
		$result=array();
2888
 
2889
		#初始化當前執行的函數名稱
2890
		$result["funciton"]=__FUNCTION__;
2891
 
2892
		#如果 $conf 不為陣列
2893
		if(gettype($conf)!="array"){
2894
 
2895
			#設置執行失敗
2896
			$result["status"]="false";
2897
 
2898
			#設置執行錯誤訊息
2899
			$result["error"][]="\$conf變數須為陣列形態";
2900
 
2901
			#如果傳入的參數為 null
2902
			if($conf==null){
2903
 
2904
				#設置執行錯誤訊息
2905
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2906
 
2907
				}#if end
2908
 
2909
			#回傳結果
2910
			return $result;
2911
 
2912
			}#if end
2913
 
2914
		#檢查參數
2915
		#函式說明:
2916
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2917
		#回傳的結果:
2918
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2919
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2920
		#$result["function"],當前執行的函式名稱.
2921
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2922
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2923
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2924
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2925
		#必填寫的參數:
2926
		$conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
2927
		$conf["variableCheck.isexistMulti"]["variableCheck"]=array("unArrangeArray","compareKey");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2928
		#可以省略的參數:
2929
		$conf["variableCheck.isexistMulti"]["variableType"]=array("array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
2930
		$conf["variableCheck.isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2931
		$checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
2932
		unset($conf["variableCheck.isexistMulti"]);
2933
 
2934
		#如果 $checkResult["status"] 為 "false"
2935
		if($checkResult["status"]=="false"){
2936
 
2937
			#設置錯誤識別
2938
			$result["status"]="false";
2939
 
2940
			#設置發生錯誤的函式
2941
			$result["error"]=$checkResult;
2942
 
2943
			#回傳結果
2944
			return $result;
2945
 
2946
			}#if end
2947
 
2948
		#如果 $checkResult["passed"] 為 "false"
2949
		if($checkResult["passed"]=="false"){
2950
 
2951
			#設置錯誤識別
2952
			$result["status"]="false";
2953
 
2954
			#設置發生錯誤的函式
2955
			$result["error"]=$checkResult;
2956
 
2957
			#回傳結果
2958
			return $result;
2959
 
2960
			}#if end
2961
 
2962
		#檢查可省略的參數
2963
		#函式說明:
2964
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
2965
		#回傳結果:
2966
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2967
		#$result["error"],錯誤訊息陣列.
2968
		#$result["function"],當前執行的函式名稱.
2969
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
2970
		#必填參數:
2971
		#$conf["checkedVar"],陣列,要檢查的變數陣列名稱為?
2972
		$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf;
2973
		#$conf["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
2974
		$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array("type");
2975
		#$conf["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
2976
		$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array("string");
2977
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
2978
		$argu=&$conf;
2979
		#可省略參數:
2980
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,"null"代表不指定.
2981
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array("desc");
2982
		#無
2983
		$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
2984
		unset($conf["variableCheck.checkSkipableVarType"]);
2985
 
2986
		#var_dump($checkResult);
2987
 
2988
		#如果 $checkResult["status"] 為 "false"
2989
		if($checkResult["status"]=="false"){
2990
 
2991
			#設置錯誤識別
2992
			$result["status"]="false";
2993
 
2994
			#設置發生錯誤的函式
2995
			$result["error"]=$checkResult;
2996
 
2997
			#回傳結果
2998
			return $result;
2999
 
3000
			}#if end
3001
 
3002
		#如果 $checkResult["passed"] 為 "false"
3003
		if($checkResult["passed"]=="false"){
3004
 
3005
			#設置錯誤識別
3006
			$result["status"]="false";
3007
 
3008
			#設置發生錯誤的函式
3009
			$result["error"]=$checkResult;
3010
 
3011
			#回傳結果
3012
			return $result;
3013
 
3014
			}#if end
3015
 
3016
		#取得要排序的數目有多少
3017
		$count=count($conf["unArrangeArray"]);
3018
 
3019
		#debug
3020
		#var_dump($count);
3021
 
3022
		#debug
3023
		#var_dump($conf["unArrangeArray"]);
3024
 
3025
		#/*
3026
 
3027
		#判斷 $conf["type"]
3028
		switch($conf["type"]){
3029
 
3030
			#如果是 "desc"
3031
			case "desc":
3032
 
3033
				#迴圈,執行 $count 次
3034
				for($i=0;$i<$count;$i++){
3035
 
3036
					#迴圈 執行 $count-$i-1 次
3037
					for($j=$i+1;$j<$count;$j++){
3038
 
3039
						#debug
3040
						#echo $conf["unArrangeArray"][0][$conf["compareKey"]]." ".$conf["unArrangeArray"][1][$conf["compareKey"]]." ".$conf["unArrangeArray"][2][$conf["compareKey"]]."<p>";
3041
 
3042
						#debug
3043
						#echo "<p>max=".$max." \$i=".$i." \$j=".$j." ".$max."<".$conf["unArrangeArray"][$j][$conf["compareKey"]]."<p>";
3044
 
3045
						#如過資料不存在
3046
						if(!isset($conf["unArrangeArray"][$i])){
3047
 
3048
							#跳到下一輪
3049
							continue;
3050
 
3051
							}#if end
3052
 
3053
						#如果當前數值大於當前的$max
3054
						if($conf["unArrangeArray"][$i][$conf["compareKey"]]<$conf["unArrangeArray"][$j][$conf["compareKey"]]){
3055
 
3056
							#debug
3057
							#echo "<p>".$max."<".$conf["unArrangeArray"][$j][$conf["compareKey"]]."<p>";
3058
 
3059
							#函式說明:
3060
							#傳參考來交換兩變數
3061
							#回傳結果:
3062
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3063
							#$result["function"],當前執行的function名稱
3064
							#$result["error"],錯誤訊息陣列.
3065
							#必填參數:
3066
							#$conf["arrays.swap"]["num1"],要交換的變數1。
3067
							$conf["arrays.swap"]["num1"]=&$conf["unArrangeArray"][$i];
3068
							#$conf["arrays.swap"]["num2"],要交換的變數2。
3069
							$conf["arrays.swap"]["num2"]=&$conf["unArrangeArray"][$j];
3070
							$swapResult=arrays::swapByReference($conf["arrays.swap"]);
3071
							unset($conf["arrays.swap"]);
3072
 
3073
							#如果 $swapResult["status"] 等於 "false"
3074
							if($swapResult["status"]=="false"){
3075
 
3076
								#設置執行錯誤
3077
								$result["status"]="false";
3078
 
3079
								#設置錯誤訊息
3080
								$result["error"]=$swapResult;
3081
 
3082
								#回傳結果
3083
								return $result;
3084
 
3085
								}#if end
3086
 
3087
							}#if end
3088
 
3089
						#debug
3090
						#echo $conf["unArrangeArray"][0][$conf["compareKey"]]." ".$conf["unArrangeArray"][1][$conf["compareKey"]]." ".$conf["unArrangeArray"][2][$conf["compareKey"]]."<p>";
3091
 
3092
						}#for end
3093
 
3094
					}#for end
3095
 
3096
				#跳出switch
3097
				break;
3098
 
3099
			#如果是 "asc"
3100
			case "asc":
3101
 
3102
				#迴圈,執行 $count 次
3103
				for($i=0;$i<$count;$i++){
3104
 
3105
					#迴圈 執行 $count-$i-1 次
3106
					for($j=$i+1;$j<$count;$j++){
3107
 
3108
						#如果當前數值小於當前的$min
3109
						if($conf["unArrangeArray"][$i][$conf["compareKey"]]>$conf["unArrangeArray"][$j][$conf["compareKey"]]){
3110
 
3111
							#debug
3112
							#echo "<p>當前數值小於當前的$min<p>";
3113
 
3114
							#函式說明:
3115
							#傳參考來交換兩變數
3116
							#回傳結果:
3117
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3118
							#$result["function"],當前執行的function名稱
3119
							#$result["error"],錯誤訊息陣列.
3120
							#必填參數:
3121
							#$conf["arrays.swap"]["num1"],要交換的變數1。
3122
							$conf["arrays.swap"]["num1"]=&$conf["unArrangeArray"][$i];
3123
							#$conf["arrays.swap"]["num2"],要交換的變數2。
3124
							$conf["arrays.swap"]["num2"]=&$conf["unArrangeArray"][$j];
3125
							$swapResult=arrays::swapByReference($conf["arrays.swap"]);
3126
							unset($conf["arrays.swap"]);
3127
 
3128
							#如果 $swapResult["status"] 等於 "false"
3129
							if($swapResult["status"]=="false"){
3130
 
3131
								#設置執行錯誤
3132
								$result["status"]="false";
3133
 
3134
								#設置錯誤訊息
3135
								$result["error"]=$swapResult;
3136
 
3137
								#回傳結果
3138
								return $result;
3139
 
3140
								}#if end
3141
 
3142
							}#if end
3143
 
3144
						}#for end
3145
 
3146
					}#for end
3147
 
3148
				#跳出switch
3149
				break;
3150
 
3151
			}#switch end
3152
 
3153
		#*/
3154
 
3155
		#執行到這邊代表執行正常
3156
		$result["status"]="true";
3157
 
3158
		#回傳結果
3159
		return $result;
3160
 
3161
		}#function arrangeTwoDmensionArray end
3162
 
3163
	/*
3164
	#函式說明:
3165
	#將一陣列數值內容加上前置與後置字串
3166
	#回傳結果:
3167
	#$result["status"],執行正常與否,"true"代表執行正常,"false"代表執行不正常.
3168
	#$result["error"],錯誤訊息陣列.
3169
	#$result["function"],當前執行的函數名稱.
3170
	#$result["content"],加上前置與後置字串後的一維陣列
3171
	#必填參數:
3172
	#$conf["inputArray"],一維陣列變數,要增加前置與後置字串的陣列變數.
3173
	$conf["inputArray"]=array();
3174
	#$conf["headStr"],字串,$conf["inputArray"]中每個元素數值內容的前面都要加上的字串.
3175
	$conf["headStr"]="";
3176
	#$conf["tailStr"],字串,$conf["inputArray"]中每個元素數值內容的後面都要加上的字串.
3177
	$conf["tailStr"]="";
3178
	#可省略參數:
3179
	#無.
70 liveuser 3180
	#參考資料:
3181
	#無.
1 liveuser 3182
	#備註:
3183
	#無.
3184
	*/
3185
	public static function addStrToHeadAndTail(&$conf){
3186
 
3187
		#初始化要回傳的變數
3188
		$result=array();
3189
 
3190
		#初始化當前執行的函數名稱
3191
		$result["funciton"]=__FUNCTION__;
3192
 
3193
		#如果 $conf 不為陣列
3194
		if(gettype($conf)!="array"){
3195
 
3196
			#設置執行失敗
3197
			$result["status"]="false";
3198
 
3199
			#設置執行錯誤訊息
3200
			$result["error"][]="\$conf變數須為陣列形態";
3201
 
3202
			#如果傳入的參數為 null
3203
			if($conf==null){
3204
 
3205
				#設置執行錯誤訊息
3206
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3207
 
3208
				}#if end
3209
 
3210
			#回傳結果
3211
			return $result;
3212
 
3213
			}#if end
3214
 
3215
		#檢查參數
3216
		#函式說明:
3217
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3218
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3219
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3220
		#$result["function"],當前執行的函式名稱.
3221
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3222
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3223
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3224
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3225
		#必填寫的參數:
3226
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3227
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3228
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3229
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray","headStr","tailStr");
3230
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3231
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","string","string");
3232
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3233
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3234
		#可以省略的參數:
3235
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
3236
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
3237
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3238
		#$conf["skipableVariableName"]=array();
3239
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3240
		#$conf["skipableVariableType"]=array();
3241
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3242
		#$conf["skipableVarDefaultValue"]=array("");
3243
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3244
		#$conf["arrayCountEqualCheck"][]=array();
3245
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3246
		unset($conf["variableCheck::checkArguments"]);
3247
 
3248
		#如果檢查變數失敗
3249
		if($checkArguments["status"]=="false"){
3250
 
3251
			#設置執行不正常
3252
			$result["status"]="false";
3253
 
3254
			#設置執行錯誤
3255
			$result["error"]=$checkArguments;
3256
 
3257
			#回傳結果
3258
			return $result;
3259
 
3260
			}#if end
3261
 
3262
		#如果檢查變數失敗
3263
		if($checkArguments["passed"]=="false"){
3264
 
3265
			#設置執行不正常
3266
			$result["status"]="false";
3267
 
3268
			#設置執行錯誤
3269
			$result["error"]=$checkArguments;
3270
 
3271
			#回傳結果
3272
			return $result;
3273
 
3274
			}#if end
3275
 
3276
		#初始化要回傳一維陣列變數
3277
		$result["content"]=array();
3278
 
3279
		#有幾個元素就執行幾次迴圈
3280
		foreach($conf["inputArray"] as $key => $value){
3281
 
3282
			#合成新元素
3283
			$result["content"][$key]=$conf["headStr"].$value.$conf["tailStr"];
3284
 
3285
			}#for end
3286
 
3287
		#設置執行正常
3288
		$result["status"]="true";
3289
 
3290
		#回傳結果
3291
		return $result;
3292
 
3293
		}#function addStrToHeadAndTail end
3294
 
3295
	/*
3296
	#函式說明:
3297
	#將陣列字串處理成一個個"[index] 元素內容"的格式,且[index]的寬度會依造陣列的長度而固定。
3298
	#回傳結果:
3299
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3300
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
3301
	#$result["function"],當前執行的函式名稱.
3302
	#$result["content"],處理好的陣列.
3303
	#必填參數:
3304
	#$conf["inputArray"],陣列字串,要轉換陣列.
3305
	$conf["inputArray"]=array();
3306
	#可省略參數:
3307
	#$conf["newLine"],字串,組合的內容是否要加換行符號,"true"代表要,"false"代表不要,預設為"ture".
3308
	#$conf["newLine"]="false";
3309
	#$conf["print"],字串,是否要直接印出來,"true"代表要,"false"代表不要,預設為"false".
3310
	#$conf["print"]="ture";
70 liveuser 3311
	#參考資料:
3312
	#無.
1 liveuser 3313
	#備註:
3314
	#無.
3315
	*/
70 liveuser 3316
	public static function toPrintableIndex(&$conf){
1 liveuser 3317
 
3318
		#初始化要回傳的結果
3319
		$result=array();
3320
 
3321
		#取得當前執行的函數名稱
3322
		$result["function"]=__FUNCTION__;
3323
 
3324
		#如果沒有參數
3325
		if(func_num_args()==0){
3326
 
3327
			#設置執行失敗
3328
			$result["status"]="false";
3329
 
3330
			#設置執行錯誤訊息
3331
			$result["error"]="函數".$result["function"]."需要參數";
3332
 
3333
			#回傳結果
3334
			return $result;
3335
 
3336
			}#if end
3337
 
3338
		#取得參數
3339
		$result["argu"]=$conf;
3340
 
3341
		#如果 $conf 不為陣列
3342
		if(gettype($conf)!=="array"){
3343
 
3344
			#設置執行失敗
3345
			$result["status"]="false";
3346
 
3347
			#設置執行錯誤訊息
3348
			$result["error"][]="\$conf變數須為陣列形態";
3349
 
3350
			#如果傳入的參數為 null
3351
			if($conf===null){
3352
 
3353
				#設置執行錯誤訊息
3354
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3355
 
3356
				}#if end
3357
 
3358
			#回傳結果
3359
			return $result;
3360
 
3361
			}#if end
3362
 
3363
		#檢查參數
3364
		#函式說明:
3365
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3366
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3367
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3368
		#$result["function"],當前執行的函式名稱.
3369
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3370
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3371
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3372
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
3373
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
3374
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
3375
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
3376
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
3377
		#必填寫的參數:
3378
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3379
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3380
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3381
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3382
		#可以省略的參數:
3383
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3384
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
3385
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
3386
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
3387
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
3388
		#$conf["canBeEmptyString"]="false";
3389
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
3390
		#$conf["canNotBeEmpty"]=array();
3391
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
3392
		#$conf["canBeEmpty"]=array();
3393
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
3394
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("newLine","print");
3395
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3396
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("newLine","print");
3397
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3398
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
3399
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3400
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true","false");
3401
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
3402
		#$conf["disallowAllSkipableVarIsEmpty"]="";
3403
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
3404
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
3405
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3406
		#$conf["arrayCountEqualCheck"][]=array();
3407
		#參考資料來源:
3408
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3409
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3410
		unset($conf["variableCheck::checkArguments"]);
3411
 
3412
		#如果檢查參數失敗
3413
		if($checkArguments["status"]==="false"){
3414
 
3415
			#設置錯誤訊息
3416
			$result["error"]=$checkArguments;
3417
 
3418
			#設置執行失敗
3419
			$result["status"]="false";
3420
 
3421
			#回傳結果
3422
			return $result;
3423
 
3424
			}#if end
3425
 
3426
		#如果檢查不通過
3427
		if($checkArguments["passed"]==="false"){
3428
 
3429
			#設置錯誤訊息
3430
			$result["error"]=$checkArguments;
3431
 
3432
			#設置執行失敗
3433
			$result["status"]="false";
3434
 
3435
			#回傳結果
3436
			return $result;
3437
 
3438
			}#if end
3439
 
3440
		#取得陣列計數長度
3441
		$arrayCountLen=strlen(count($conf["inputArray"]));
3442
 
3443
		#初始化換行符號
3444
		$newLine="\n";
3445
 
3446
		#如果不要換行符號
3447
		if($conf["newLine"]==="false"){
3448
 
3449
			#設置為空字串
3450
			$newLine="";
3451
 
3452
			}#if end
3453
 
3454
		#針對每個要處理的陣列
3455
		foreach($conf["inputArray"] as $key=>$val){
3456
 
3457
			#如果列數長度加3小於要移除檔案之計數長度
3458
			while(strlen($key)<$arrayCountLen){
3459
 
3460
				#在前面加上空格
3461
				$key=" ".$key;
3462
 
3463
				}#if end
3464
 
3465
			#組合內容
3466
			$result["content"][]="[".$key."] ".$val.$newLine;
3467
 
3468
			#如果要印出來
3469
			if($conf["print"]==="true"){
3470
 
3471
				#印出來
3472
				echo "[".$key."] ".$val.$newLine;
3473
 
3474
				}#if end
3475
 
3476
			}#foreach end
3477
 
3478
		#設置執行正常
3479
		$result["status"]="true";
3480
 
3481
		#回傳結果
3482
		return $result;
3483
 
3484
		}#function toPrintableIndex end
3485
 
3486
	/*
3487
	#函式說明:
3488
	#將陣列進行切割
3489
	#回傳結果:
3490
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3491
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
3492
	#$result["function"],當前執行的函式名稱.
3493
	#$result["content"]["get"],切割出來的陣列.
3494
	#$result["content"]["leftL"],遺留下來的陣列,左邊.
3495
	#$result["content"]["leftR"],遺留下來的陣列,右邊.
3496
	#$result["content"]["ori"],原始的陣列.
3497
	#$result["argu"],使用的參數.
3498
	#必填參數:
3499
	#$conf["array"],要進行分割的陣列.
3500
	$conf["array"]=array();
3501
	#$conf["length"],整數,要切幾個元素.
3502
	$conf["length"]=;
3503
	#可省略參數:
3504
	#$conf["offset"],整數,要從第幾個元素開始切,預設為0
3505
	#$conf["offset"]=0;
70 liveuser 3506
	#參考資料:
3507
	#無.
1 liveuser 3508
	#備註:
3509
	#無.
3510
	*/
70 liveuser 3511
	public static function split(&$conf){
1 liveuser 3512
 
3513
		#初始化要回傳的結果
3514
		$result=array();
3515
 
3516
		#取得當前執行的函數名稱
3517
		$result["function"]=__FUNCTION__;
3518
 
3519
		#如果沒有參數
3520
		if(func_num_args()==0){
3521
 
3522
			#設置執行失敗
3523
			$result["status"]="false";
3524
 
3525
			#設置執行錯誤訊息
3526
			$result["error"]="函數".$result["function"]."需要參數";
3527
 
3528
			#回傳結果
3529
			return $result;
3530
 
3531
			}#if end
3532
 
3533
		#取得參數
3534
		$result["argu"]=$conf;
3535
 
3536
		#如果 $conf 不為陣列
3537
		if(gettype($conf)!=="array"){
3538
 
3539
			#設置執行失敗
3540
			$result["status"]="false";
3541
 
3542
			#設置執行錯誤訊息
3543
			$result["error"][]="\$conf變數須為陣列形態";
3544
 
3545
			#如果傳入的參數為 null
3546
			if($conf===null){
3547
 
3548
				#設置執行錯誤訊息
3549
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3550
 
3551
				}#if end
3552
 
3553
			#回傳結果
3554
			return $result;
3555
 
3556
			}#if end
3557
 
3558
		#檢查參數
3559
		#函式說明:
3560
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3561
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3562
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3563
		#$result["function"],當前執行的函式名稱.
3564
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3565
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3566
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3567
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
3568
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
3569
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
3570
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
3571
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
3572
		#必填寫的參數:
3573
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3574
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3575
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3576
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3577
		#可以省略的參數:
3578
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3579
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("array","length");
3580
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
3581
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","integer");
3582
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
3583
		#$conf["canBeEmptyString"]="false";
3584
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
3585
		#$conf["canNotBeEmpty"]=array();
3586
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
3587
		#$conf["canBeEmpty"]=array();
3588
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
3589
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("offset");
3590
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3591
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("offset");
3592
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3593
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("integer");
3594
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3595
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(0);
3596
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
3597
		#$conf["disallowAllSkipableVarIsEmpty"]="";
3598
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
3599
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
3600
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3601
		#$conf["arrayCountEqualCheck"][]=array();
3602
		#參考資料來源:
3603
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3604
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3605
		unset($conf["variableCheck::checkArguments"]);
3606
 
3607
		#如果檢查參數失敗
3608
		if($checkArguments["status"]==="false"){
3609
 
3610
			#設置錯誤訊息
3611
			$result["error"]=$checkArguments;
3612
 
3613
			#設置執行失敗
3614
			$result["status"]="false";
3615
 
3616
			#回傳結果
3617
			return $result;
3618
 
3619
			}#if end
3620
 
3621
		#如果檢查不通過
3622
		if($checkArguments["passed"]==="false"){
3623
 
3624
			#設置錯誤訊息
3625
			$result["error"]=$checkArguments;
3626
 
3627
			#設置執行失敗
3628
			$result["status"]="false";
3629
 
3630
			#回傳結果
3631
			return $result;
3632
 
3633
			}#if end
3634
 
3635
		#初始化要回傳的結果
3636
		$result["content"]=array();
3637
 
3638
		#初始化儲存切割出來的陣列內容
3639
		$result["content"]["get"]=array();
3640
 
3641
		#初始化儲存剩下來的左方陣列
3642
		$result["content"]["leftL"]=array();
3643
 
3644
		#初始化儲存剩下來的右方陣列
3645
		$result["content"]["leftR"]=array();
3646
 
3647
		#設置原始的陣列
3648
		$result["content"]["ori"]=$conf["array"];
3649
 
3650
		#計數
3651
		$count=-1;
3652
 
3653
		#針對每個元素
3654
		foreach($conf["array"] as $key=>$val){
3655
 
3656
			#計數加0
3657
			++$count;
3658
 
3659
			#如果是開始要切割的位置
3660
			if($conf["offset"]<=$count){
3661
 
3662
				#如果切出的長度還不足
3663
				if($conf["length"]>count($result["content"]["get"])){
3664
 
3665
					#儲存切割出來的元素
3666
					$result["content"]["get"][]=$val;				
3667
 
3668
					}#if end
3669
 
3670
				#反之切割出來的長度已經足夠了
3671
				else{
3672
 
3673
					#儲存剩下來的右方陣列
3674
					$result["content"]["leftR"][]=$val;
3675
 
3676
					}#else end
3677
 
3678
				}#if end
3679
 
3680
			#反之沒到要切割的位置
3681
			else{
3682
 
3683
				#儲存剩下來的右方陣列
3684
				$result["content"]["leftL"][]=$val;
3685
 
3686
				}#else end
3687
 
3688
			}#foreach end
3689
 
3690
		#設置執行正常
3691
		$result["status"]="true";
3692
 
3693
		#回傳結果
3694
		return $result;
3695
 
3696
		}#function split end
3697
 
3698
	/*
3699
	#函式說明:
3700
	#將既有的一維陣列變成二維陣列,新增指定或相同的欄位資訊.
3701
	#回傳結果:
3702
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3703
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
3704
	#$result["function"],當前執行的函式名稱.
3705
	#$result["content"],合併好的2維陣列.
3706
	#$result["argu"],使用的參數.
3707
	#必填參數:
3708
	#$conf["array"],陣列,要進行合併的一維陣列.
3709
	$conf["array"]=array();
3710
	#$conf["newArray"],陣列,要新增的欄位陣列,若資料筆數不等同於count($conf["array"]),則代表產生相同的欄位元素.
3711
	$conf["newArray"]=array();
3712
	#可省略參數:
3713
	#無.
70 liveuser 3714
	#參考資料:
3715
	#無.
1 liveuser 3716
	#備註:
3717
	#無.
3718
	*/
70 liveuser 3719
	public static function addColumn(&$conf){
1 liveuser 3720
 
3721
		#初始化要回傳的結果
3722
		$result=array();
3723
 
3724
		#取得當前執行的函數名稱
3725
		$result["function"]=__FUNCTION__;
3726
 
3727
		#如果沒有參數
3728
		if(func_num_args()==0){
3729
 
3730
			#設置執行失敗
3731
			$result["status"]="false";
3732
 
3733
			#設置執行錯誤訊息
3734
			$result["error"]="函數".$result["function"]."需要參數";
3735
 
3736
			#回傳結果
3737
			return $result;
3738
 
3739
			}#if end
3740
 
3741
		#取得參數
3742
		$result["argu"]=$conf;
3743
 
3744
		#如果 $conf 不為陣列
3745
		if(gettype($conf)!=="array"){
3746
 
3747
			#設置執行失敗
3748
			$result["status"]="false";
3749
 
3750
			#設置執行錯誤訊息
3751
			$result["error"][]="\$conf變數須為陣列形態";
3752
 
3753
			#如果傳入的參數為 null
3754
			if($conf===null){
3755
 
3756
				#設置執行錯誤訊息
3757
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3758
 
3759
				}#if end
3760
 
3761
			#回傳結果
3762
			return $result;
3763
 
3764
			}#if end
3765
 
3766
		#檢查參數
3767
		#函式說明:
3768
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3769
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3770
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3771
		#$result["function"],當前執行的函式名稱.
3772
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3773
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3774
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3775
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
3776
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
3777
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
3778
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
3779
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
3780
		#必填寫的參數:
3781
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3782
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3783
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3784
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3785
		#可以省略的參數:
3786
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3787
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("array","newArray");
3788
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
3789
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
3790
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
3791
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
3792
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
3793
		#$conf["canNotBeEmpty"]=array();
3794
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
3795
		#$conf["canBeEmpty"]=array();
3796
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
3797
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("offset");
3798
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3799
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("offset");
3800
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3801
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("integer");
3802
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3803
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(0);
3804
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
3805
		#$conf["disallowAllSkipableVarIsEmpty"]="";
3806
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
3807
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
3808
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3809
		#$conf["arrayCountEqualCheck"][]=array();
3810
		#參考資料來源:
3811
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3812
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3813
		unset($conf["variableCheck::checkArguments"]);
3814
 
3815
		#如果檢查參數失敗
3816
		if($checkArguments["status"]==="false"){
3817
 
3818
			#設置錯誤訊息
3819
			$result["error"]=$checkArguments;
3820
 
3821
			#設置執行失敗
3822
			$result["status"]="false";
3823
 
3824
			#回傳結果
3825
			return $result;
3826
 
3827
			}#if end
3828
 
3829
		#如果檢查不通過
3830
		if($checkArguments["passed"]==="false"){
3831
 
3832
			#設置錯誤訊息
3833
			$result["error"]=$checkArguments;
3834
 
3835
			#設置執行失敗
3836
			$result["status"]="false";
3837
 
3838
			#回傳結果
3839
			return $result;
3840
 
3841
			}#if end
3842
 
3843
		#初始化要回傳的二維陣列內容
3844
		$result["content"]=array(array());
3845
 
3846
		#針對每個要處理的既有一維陣列變數
3847
		foreach($conf["array"] as $index => $firstEle){
3848
 
3849
			#如果存在新的欄位指定內容
3850
			if(isset($conf["newArray"][$index]))
3851
			{
3852
				#設置新的欄位內容
3853
				$secondEle=$conf["newArray"][$index];
3854
			}
3855
 
3856
			#反之
3857
			else
3858
			{
3859
				#設置新的欄位內容為第一個新的元素
3860
				$secondEle=$conf["newArray"][0];
3861
			}
3862
 
3863
			#設置新的欄位內容
3864
			$row=array($firstEle,$secondEle);
3865
 
3866
			#儲存新的欄位內容
3867
			$result["content"][]=$row;
3868
 
3869
			}#foreach end
3870
 
3871
		#設置執行正常
3872
		$result["status"]="true";
3873
 
3874
		#回傳結果
3875
		return $result;
3876
 
851 liveuser 3877
		}#function addColumn end
1 liveuser 3878
 
3879
	}#end arrays class
3880
 
3881
?>