Subversion Repositories php-qbpwcf

Rev

Rev 218 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 218 Rev 226
Line 1... Line 1...
1
<?php
1
<?php
2
 
2
 
3
/*
3
/*
4
 
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
6
    Copyright (C) 2015~2024 Min-Jhin,Chen
6
    Copyright (C) 2014~2025 MIN ZHI, CHEN
7
 
7
 
8
    This file is part of QBPWCF.
8
    This file is part of QBPWCF.
9
 
9
 
10
    QBPWCF is free software: you can redistribute it and/or modify
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
11
    it under the terms of the GNU General Public License as published by
Line 47... Line 47...
47
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
47
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
48
	#備註:
48
	#備註:
49
	#無.
49
	#無.
50
	*/
50
	*/
51
	public function __call($method,$arguments){
51
	public function __call($method,$arguments){
52
		
52
 
53
		#取得當前執行的函式
53
		#取得當前執行的函式
54
		$result["function"]=__FUNCTION__;
54
		$result["function"]=__FUNCTION__;
55
		
55
 
56
		#設置執行不正常
56
		#設置執行不正常
57
		$result["status"]="false";
57
		$result["status"]="false";
58
		
58
 
59
		#設置執行錯誤
59
		#設置執行錯誤
60
		$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";
60
		$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";
61
		
61
 
62
		#設置所丟入的參數
62
		#設置所丟入的參數
63
		$result["error"][]=$arguments;
63
		$result["error"][]=$arguments;
64
		
64
 
65
		#回傳結果
65
		#回傳結果
66
		return $result;
66
		return $result;
67
		
67
 
68
		}#function __call end
68
		}#function __call end
69
		
69
 
70
	/*
70
	/*
71
	#函式說明:
71
	#函式說明:
72
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
72
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
73
	#回傳結果:
73
	#回傳結果:
74
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
74
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 83... Line 83...
83
	#__callStatic=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
83
	#__callStatic=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
84
	#備註:
84
	#備註:
85
	#無.
85
	#無.
86
	*/
86
	*/
87
	public static function __callStatic($method,$arguments){
87
	public static function __callStatic($method,$arguments){
88
		
88
 
89
		#取得當前執行的函式
89
		#取得當前執行的函式
90
		$result["function"]=__FUNCTION__;
90
		$result["function"]=__FUNCTION__;
91
		
91
 
92
		#設置執行不正常
92
		#設置執行不正常
93
		$result["status"]="false";
93
		$result["status"]="false";
94
		
94
 
95
		#設置執行錯誤
95
		#設置執行錯誤
96
		$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";
96
		$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";
97
		
97
 
98
		#設置所丟入的參數
98
		#設置所丟入的參數
99
		$result["error"][]=$arguments;
99
		$result["error"][]=$arguments;
100
		
100
 
101
		#回傳結果
101
		#回傳結果
102
		return $result;
102
		return $result;
103
		
103
 
104
		}#function __callStatic end
104
		}#function __callStatic end
105
	
105
 
106
	/*
106
	/*
107
	#函式說明:
107
	#函式說明:
108
	#計算總和.
108
	#計算總和.
109
	#回傳結果:
109
	#回傳結果:
110
	#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
110
	#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
Line 122... Line 122...
122
	*/
122
	*/
123
	public static function computeSum(&$conf){
123
	public static function computeSum(&$conf){
124
 
124
 
125
		#初始化要回傳的內容
125
		#初始化要回傳的內容
126
		$result=array();
126
		$result=array();
127
		
127
 
128
		#記錄當前執行的函數名稱
128
		#記錄當前執行的函數名稱
129
		$result["function"]=__FUNCTION__;
129
		$result["function"]=__FUNCTION__;
130
 
130
 
131
		#如果 $conf 不為陣列
131
		#如果 $conf 不為陣列
132
		if(gettype($conf)!="array"){
132
		if(gettype($conf)!="array"){
133
			
133
 
134
			#設置執行失敗
134
			#設置執行失敗
135
			$result["status"]="false";
135
			$result["status"]="false";
136
			
136
 
137
			#設置執行錯誤訊息
137
			#設置執行錯誤訊息
138
			$result["error"][]="\$conf變數須為陣列形態";
138
			$result["error"][]="\$conf變數須為陣列形態";
139
 
139
 
140
			#如果傳入的參數為 null
140
			#如果傳入的參數為 null
141
			if($conf==null){
141
			if($conf==null){
142
				
142
 
143
				#設置執行錯誤訊息
143
				#設置執行錯誤訊息
144
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
144
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
145
				
145
 
146
				}#if end
146
				}#if end
147
 
147
 
148
			#回傳結果
148
			#回傳結果
149
			return $result;
149
			return $result;
150
			
150
 
151
			}#if end
151
			}#if end
152
 
152
 
153
		#檢查參數
153
		#檢查參數
154
		#函式說明:
154
		#函式說明:
155
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
155
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 166... Line 166...
166
		#必填寫的參數:
166
		#必填寫的參數:
167
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
167
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
168
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
168
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
169
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
169
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
170
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
170
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
171
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
171
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
172
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
172
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
173
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
173
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
174
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
174
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
175
		#可以省略的參數:
175
		#可以省略的參數:
176
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
176
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
177
		$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
177
		$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
178
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
178
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
179
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
179
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
180
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
180
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
181
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
181
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
182
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
182
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
183
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
183
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
184
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
184
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
185
		#$conf["arrayCountEqualCheck"][]=array();
185
		#$conf["arrayCountEqualCheck"][]=array();
Line 188... Line 188...
188
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
188
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
189
		unset($conf["variableCheck::checkArguments"]);
189
		unset($conf["variableCheck::checkArguments"]);
190
 
190
 
191
		#如果檢查參數失敗
191
		#如果檢查參數失敗
192
		if($checkArguments["status"]=="false"){
192
		if($checkArguments["status"]=="false"){
193
			
193
 
194
			#設置執行失敗
194
			#設置執行失敗
195
			$result["status"]="false";
195
			$result["status"]="false";
196
			
196
 
197
			#設置執行錯誤訊息
197
			#設置執行錯誤訊息
198
			$result["error"]=$checkArguments;
198
			$result["error"]=$checkArguments;
199
 
199
 
200
			#回傳結果
200
			#回傳結果
201
			return $result;
201
			return $result;
202
			
202
 
203
			}#if end
203
			}#if end
204
			
204
 
205
		#如果檢查不通過
205
		#如果檢查不通過
206
		if($checkArguments["passed"]=="false"){
206
		if($checkArguments["passed"]=="false"){
207
			
207
 
208
			#設置執行失敗
208
			#設置執行失敗
209
			$result["status"]="false";
209
			$result["status"]="false";
210
			
210
 
211
			#設置執行錯誤訊息
211
			#設置執行錯誤訊息
212
			$result["error"]=$checkArguments;
212
			$result["error"]=$checkArguments;
213
 
213
 
214
			#回傳結果
214
			#回傳結果
215
			return $result;
215
			return $result;
216
			
216
 
217
			}#if end
217
			}#if end
218
 
218
 
219
		#加總陣列中的數字
219
		#加總陣列中的數字
220
		$sum=array_sum($conf["rawDataArray"]);
220
		$sum=array_sum($conf["rawDataArray"]);
221
 
221
 
222
		#如果加總失敗
222
		#如果加總失敗
223
		if($sum==false){
223
		if($sum==false){
224
			
224
 
225
			#設置執行失敗
225
			#設置執行失敗
226
			$result["status"]="false";
226
			$result["status"]="false";
227
			
227
 
228
			#設置執行錯誤訊息
228
			#設置執行錯誤訊息
229
			$result["error"][]="加總失敗";
229
			$result["error"][]="加總失敗";
230
 
230
 
231
			#回傳結果
231
			#回傳結果
232
			return $result;
232
			return $result;
233
			
233
 
234
			}#if end
234
			}#if end
235
		
235
 
236
		#反之加總成功	
236
		#反之加總成功
237
		else{
237
		else{
238
			
238
 
239
			#取得總和
239
			#取得總和
240
			$result["content"]=$sum;
240
			$result["content"]=$sum;
241
			
241
 
242
			}#else end
242
			}#else end
243
 
243
 
244
		#設置執行正常
244
		#設置執行正常
245
		$result["status"]="true";
245
		$result["status"]="true";
246
 
246
 
247
		#回傳總和
247
		#回傳總和
248
		return $result;
248
		return $result;
249
	
249
 
250
		}#function computeSum end
250
		}#function computeSum end
251
 
251
 
252
	/*
252
	/*
253
	#函式說明:
253
	#函式說明:
254
	#計算平均數.
254
	#計算平均數.
Line 268... Line 268...
268
	*/
268
	*/
269
	public static function computeMean(&$conf){
269
	public static function computeMean(&$conf){
270
 
270
 
271
		#初始化要回傳的內容
271
		#初始化要回傳的內容
272
		$result=array();
272
		$result=array();
273
		
273
 
274
		#記錄當前執行的函數名稱
274
		#記錄當前執行的函數名稱
275
		$result["function"]=__FUNCTION__;
275
		$result["function"]=__FUNCTION__;
276
 
276
 
277
		#如果 $conf 不為陣列
277
		#如果 $conf 不為陣列
278
		if(gettype($conf)!="array"){
278
		if(gettype($conf)!="array"){
279
			
279
 
280
			#設置執行失敗
280
			#設置執行失敗
281
			$result["status"]="false";
281
			$result["status"]="false";
282
			
282
 
283
			#設置執行錯誤訊息
283
			#設置執行錯誤訊息
284
			$result["error"][]="\$conf變數須為陣列形態";
284
			$result["error"][]="\$conf變數須為陣列形態";
285
 
285
 
286
			#如果傳入的參數為 null
286
			#如果傳入的參數為 null
287
			if($conf==null){
287
			if($conf==null){
288
				
288
 
289
				#設置執行錯誤訊息
289
				#設置執行錯誤訊息
290
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
290
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
291
				
291
 
292
				}#if end
292
				}#if end
293
	
293
 
294
			#回傳結果
294
			#回傳結果
295
			return $result;
295
			return $result;
296
			
296
 
297
			}#if end
297
			}#if end
298
 
298
 
299
		#檢查參數
299
		#檢查參數
300
		#函式說明:
300
		#函式說明:
301
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
301
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 312... Line 312...
312
		#必填寫的參數:
312
		#必填寫的參數:
313
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
313
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
314
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
314
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
315
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
315
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
316
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
316
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
317
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
317
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
318
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
318
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
319
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
319
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
320
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
320
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
321
		#可以省略的參數:
321
		#可以省略的參數:
322
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
322
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
323
		$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
323
		$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
324
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
324
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
325
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
325
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
326
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
326
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
327
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
327
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
328
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
328
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
329
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
329
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
330
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
330
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
331
		#$conf["arrayCountEqualCheck"][]=array();
331
		#$conf["arrayCountEqualCheck"][]=array();
Line 334... Line 334...
334
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
334
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
335
		unset($conf["variableCheck::checkArguments"]);
335
		unset($conf["variableCheck::checkArguments"]);
336
 
336
 
337
		#如果檢查參數失敗
337
		#如果檢查參數失敗
338
		if($checkArguments["status"]=="false"){
338
		if($checkArguments["status"]=="false"){
339
			
339
 
340
			#設置執行失敗
340
			#設置執行失敗
341
			$result["status"]="false";
341
			$result["status"]="false";
342
			
342
 
343
			#設置執行錯誤訊息
343
			#設置執行錯誤訊息
344
			$result["error"]=$checkArguments;
344
			$result["error"]=$checkArguments;
345
 
345
 
346
			#回傳結果
346
			#回傳結果
347
			return $result;
347
			return $result;
348
			
348
 
349
			}#if end
349
			}#if end
350
			
350
 
351
		#如果檢查不通過
351
		#如果檢查不通過
352
		if($checkArguments["passed"]=="false"){
352
		if($checkArguments["passed"]=="false"){
353
			
353
 
354
			#設置執行失敗
354
			#設置執行失敗
355
			$result["status"]="false";
355
			$result["status"]="false";
356
			
356
 
357
			#設置執行錯誤訊息
357
			#設置執行錯誤訊息
358
			$result["error"]=$checkArguments;
358
			$result["error"]=$checkArguments;
359
 
359
 
360
			#回傳結果
360
			#回傳結果
361
			return $result;
361
			return $result;
362
			
362
 
363
			}#if end
363
			}#if end
364
 
364
 
365
		#取得原始資料的筆數
365
		#取得原始資料的筆數
366
		$rawDataCount=count($conf["rawDataArray"]);
366
		$rawDataCount=count($conf["rawDataArray"]);
367
 
367
 
Line 380... Line 380...
380
		$computeSum=math::computeSum($conf["math::computeSum"]);
380
		$computeSum=math::computeSum($conf["math::computeSum"]);
381
		unset($conf["math::computeSum"]);
381
		unset($conf["math::computeSum"]);
382
 
382
 
383
		#如果加總失敗
383
		#如果加總失敗
384
		if($computeSum["status"]=="false"){
384
		if($computeSum["status"]=="false"){
385
			
385
 
386
			#設置執行失敗
386
			#設置執行失敗
387
			$result["status"]="false";
387
			$result["status"]="false";
388
			
388
 
389
			#設置執行錯誤訊息
389
			#設置執行錯誤訊息
390
			$result["error"]=$computeSum;
390
			$result["error"]=$computeSum;
391
 
391
 
392
			#回傳結果
392
			#回傳結果
393
			return $result;
393
			return $result;
394
			
394
 
395
			}#if end
395
			}#if end
396
 
396
 
397
		#取得平均數
397
		#取得平均數
398
		$result["content"]=$computeSum["content"]/$rawDataCount;
398
		$result["content"]=$computeSum["content"]/$rawDataCount;
399
 
399
 
Line 424... Line 424...
424
	*/
424
	*/
425
	public static function computeStandardDeviation(&$conf){
425
	public static function computeStandardDeviation(&$conf){
426
 
426
 
427
		#初始化要回傳的內容
427
		#初始化要回傳的內容
428
		$result=array();
428
		$result=array();
429
		
429
 
430
		#記錄當前執行的函數名稱
430
		#記錄當前執行的函數名稱
431
		$result["function"]=__FUNCTION__;
431
		$result["function"]=__FUNCTION__;
432
 
432
 
433
		#如果 $conf 不為陣列
433
		#如果 $conf 不為陣列
434
		if(gettype($conf)!="array"){
434
		if(gettype($conf)!="array"){
435
			
435
 
436
			#設置執行失敗
436
			#設置執行失敗
437
			$result["status"]="false";
437
			$result["status"]="false";
438
			
438
 
439
			#設置執行錯誤訊息
439
			#設置執行錯誤訊息
440
			$result["error"][]="\$conf變數須為陣列形態";
440
			$result["error"][]="\$conf變數須為陣列形態";
441
 
441
 
442
			#如果傳入的參數為 null
442
			#如果傳入的參數為 null
443
			if($conf==null){
443
			if($conf==null){
444
				
444
 
445
				#設置執行錯誤訊息
445
				#設置執行錯誤訊息
446
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
446
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
447
				
447
 
448
				}#if end
448
				}#if end
449
 
449
 
450
			#回傳結果
450
			#回傳結果
451
			return $result;
451
			return $result;
452
			
452
 
453
			}#if end
453
			}#if end
454
 
454
 
455
		#檢查參數
455
		#檢查參數
456
		#函式說明:
456
		#函式說明:
457
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
457
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 468... Line 468...
468
		#必填寫的參數:
468
		#必填寫的參數:
469
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
469
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
470
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
470
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
471
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
471
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
472
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
472
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
473
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
473
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
474
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
474
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
475
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
475
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
476
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
476
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
477
		#可以省略的參數:
477
		#可以省略的參數:
478
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
478
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
479
		$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
479
		$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
480
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
480
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
481
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
481
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
482
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
482
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
483
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
483
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
484
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
484
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
485
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
485
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
486
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
486
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
487
		#$conf["arrayCountEqualCheck"][]=array();
487
		#$conf["arrayCountEqualCheck"][]=array();
Line 490... Line 490...
490
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
490
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
491
		unset($conf["variableCheck::checkArguments"]);
491
		unset($conf["variableCheck::checkArguments"]);
492
 
492
 
493
		#如果檢查參數失敗
493
		#如果檢查參數失敗
494
		if($checkArguments["status"]=="false"){
494
		if($checkArguments["status"]=="false"){
495
			
495
 
496
			#設置執行失敗
496
			#設置執行失敗
497
			$result["status"]="false";
497
			$result["status"]="false";
498
			
498
 
499
			#設置執行錯誤訊息
499
			#設置執行錯誤訊息
500
			$result["error"]=$checkArguments;
500
			$result["error"]=$checkArguments;
501
 
501
 
502
			#回傳結果
502
			#回傳結果
503
			return $result;
503
			return $result;
504
			
504
 
505
			}#if end
505
			}#if end
506
			
506
 
507
		#如果檢查不通過
507
		#如果檢查不通過
508
		if($checkArguments["passed"]=="false"){
508
		if($checkArguments["passed"]=="false"){
509
			
509
 
510
			#設置執行失敗
510
			#設置執行失敗
511
			$result["status"]="false";
511
			$result["status"]="false";
512
			
512
 
513
			#設置執行錯誤訊息
513
			#設置執行錯誤訊息
514
			$result["error"]=$checkArguments;
514
			$result["error"]=$checkArguments;
515
 
515
 
516
			#回傳結果
516
			#回傳結果
517
			return $result;
517
			return $result;
518
			
518
 
519
			}#if end
519
			}#if end
520
 
520
 
521
		#取得原始資料的筆數
521
		#取得原始資料的筆數
522
		$rawDataCounts=count($conf["rawDataArray"]);
522
		$rawDataCounts=count($conf["rawDataArray"]);
523
 
523
 
Line 529... Line 529...
529
		$mean=math::computeMean($conf["math"]["computeMean"]);
529
		$mean=math::computeMean($conf["math"]["computeMean"]);
530
		unset($conf["math"]["computeMean"]);
530
		unset($conf["math"]["computeMean"]);
531
 
531
 
532
		#如果取得平均數失敗
532
		#如果取得平均數失敗
533
		if($mean["status"]=="false"){
533
		if($mean["status"]=="false"){
534
			
534
 
535
			#設置執行失敗
535
			#設置執行失敗
536
			$result["status"]="false";
536
			$result["status"]="false";
537
			
537
 
538
			#設置執行錯誤訊息
538
			#設置執行錯誤訊息
539
			$result["error"]=$mean;
539
			$result["error"]=$mean;
540
 
540
 
541
			#回傳結果
541
			#回傳結果
542
			return $result;
542
			return $result;
543
			
543
 
544
			}#if end
544
			}#if end
545
 
545
 
546
		#取得平均數
546
		#取得平均數
547
		$mean=$mean["content"];
547
		$mean=$mean["content"];
548
 
548
 
Line 592... Line 592...
592
	#無.
592
	#無.
593
	#備註:
593
	#備註:
594
	#無.
594
	#無.
595
	*/
595
	*/
596
	public static function arrangeNum(&$conf){
596
	public static function arrangeNum(&$conf){
597
		
597
 
598
		#初始化要回傳的內容
598
		#初始化要回傳的內容
599
		$result=array();
599
		$result=array();
600
		
600
 
601
		#記錄當前執行的函數名稱
601
		#記錄當前執行的函數名稱
602
		$result["function"]=__FUNCTION__;
602
		$result["function"]=__FUNCTION__;
603
 
603
 
604
		#如果 $conf 不為陣列
604
		#如果 $conf 不為陣列
605
		if(gettype($conf)!="array"){
605
		if(gettype($conf)!="array"){
606
			
606
 
607
			#設置執行失敗
607
			#設置執行失敗
608
			$result["status"]="false";
608
			$result["status"]="false";
609
			
609
 
610
			#設置執行錯誤訊息
610
			#設置執行錯誤訊息
611
			$result["error"][]="\$conf變數須為陣列形態";
611
			$result["error"][]="\$conf變數須為陣列形態";
612
 
612
 
613
			#如果傳入的參數為 null
613
			#如果傳入的參數為 null
614
			if($conf==null){
614
			if($conf==null){
615
				
615
 
616
				#設置執行錯誤訊息
616
				#設置執行錯誤訊息
617
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
617
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
618
				
618
 
619
				}#if end
619
				}#if end
620
 
620
 
621
			#回傳結果
621
			#回傳結果
622
			return $result;
622
			return $result;
623
			
623
 
624
			}#if end
624
			}#if end
625
 
625
 
626
		#檢查參數
626
		#檢查參數
627
		#函式說明:
627
		#函式說明:
628
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
628
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 639... Line 639...
639
		#必填寫的參數:
639
		#必填寫的參數:
640
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
640
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
641
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
641
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
642
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
642
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
643
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
643
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
644
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
644
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
645
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
645
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
646
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
646
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
647
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
647
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
648
		#可以省略的參數:
648
		#可以省略的參數:
649
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
649
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
650
		$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
650
		$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
651
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
651
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
652
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
652
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
653
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
653
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
654
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
654
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
655
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
655
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
656
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
656
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
657
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
657
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
658
		#$conf["arrayCountEqualCheck"][]=array();
658
		#$conf["arrayCountEqualCheck"][]=array();
Line 661... Line 661...
661
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
661
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
662
		unset($conf["variableCheck::checkArguments"]);
662
		unset($conf["variableCheck::checkArguments"]);
663
 
663
 
664
		#如果檢查參數失敗
664
		#如果檢查參數失敗
665
		if($checkArguments["status"]=="false"){
665
		if($checkArguments["status"]=="false"){
666
			
666
 
667
			#設置執行失敗
667
			#設置執行失敗
668
			$result["status"]="false";
668
			$result["status"]="false";
669
			
669
 
670
			#設置執行錯誤訊息
670
			#設置執行錯誤訊息
671
			$result["error"]=$checkArguments;
671
			$result["error"]=$checkArguments;
672
 
672
 
673
			#回傳結果
673
			#回傳結果
674
			return $result;
674
			return $result;
675
			
675
 
676
			}#if end
676
			}#if end
677
			
677
 
678
		#如果檢查不通過
678
		#如果檢查不通過
679
		if($checkArguments["passed"]=="false"){
679
		if($checkArguments["passed"]=="false"){
680
			
680
 
681
			#設置執行失敗
681
			#設置執行失敗
682
			$result["status"]="false";
682
			$result["status"]="false";
683
			
683
 
684
			#設置執行錯誤訊息
684
			#設置執行錯誤訊息
685
			$result["error"]=$checkArguments;
685
			$result["error"]=$checkArguments;
686
 
686
 
687
			#回傳結果
687
			#回傳結果
688
			return $result;
688
			return $result;
689
			
689
 
690
			}#if end
690
			}#if end
691
		
691
 
692
		#用來儲存排列後順序的陣列
692
		#用來儲存排列後順序的陣列
693
		$result["content"]=array();
693
		$result["content"]=array();
694
		
694
 
695
		#用來計算的暫存陣列
695
		#用來計算的暫存陣列
696
		$inputTempArray=$conf["rawDataArray"];
696
		$inputTempArray=$conf["rawDataArray"];
697
		
697
 
698
		#初始化計數
698
		#初始化計數
699
		$count=0;
699
		$count=0;
700
		
700
 
701
		#當 $inputTempArray 有元素就執行
701
		#當 $inputTempArray 有元素就執行
702
		while(count($inputTempArray)>0){
702
		while(count($inputTempArray)>0){
703
		
703
 
704
			#函式說明:
704
			#函式說明:
705
			#找最大值,結果會回傳最大值.
705
			#找最大值,結果會回傳最大值.
706
			#回傳結果:
706
			#回傳結果:
707
			#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
707
			#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
708
			#$result["error"],錯誤訊息陣列.
708
			#$result["error"],錯誤訊息陣列.
Line 711... Line 711...
711
			#$result["value"],最大值的數字.
711
			#$result["value"],最大值的數字.
712
			#必填參數:
712
			#必填參數:
713
			$conf["math::getMaxValue"]["rawDataArray"]=$inputTempArray;#爲原始數據
713
			$conf["math::getMaxValue"]["rawDataArray"]=$inputTempArray;#爲原始數據
714
			$getMaxValue=math::getMaxValue($conf["math::getMaxValue"]);
714
			$getMaxValue=math::getMaxValue($conf["math::getMaxValue"]);
715
			unset($conf["math::getMaxValue"]);
715
			unset($conf["math::getMaxValue"]);
716
		
716
 
717
			#如果尋找最大值失敗
717
			#如果尋找最大值失敗
718
			if($getMaxValue["status"]=="false"){
718
			if($getMaxValue["status"]=="false"){
719
				
719
 
720
				#設置執行失敗
720
				#設置執行失敗
721
				$result["status"]="false";
721
				$result["status"]="false";
722
				
722
 
723
				#設置執行錯誤訊息
723
				#設置執行錯誤訊息
724
				$result["error"]=$getMaxValue;
724
				$result["error"]=$getMaxValue;
725
 
725
 
726
				#回傳結果
726
				#回傳結果
727
				return $result;
727
				return $result;
728
				
728
 
729
				}#if end
729
				}#if end
730
			
730
 
731
			#函式說明:
731
			#函式說明:
732
			#將陣列中特定元素剔除,並重新按照順序排序
732
			#將陣列中特定元素剔除,並重新按照順序排序
733
			#回傳結果:
733
			#回傳結果:
734
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
734
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
735
			#$result["error"],錯誤訊息
735
			#$result["error"],錯誤訊息
736
			#$result["function"],當前執行的函數
736
			#$result["function"],當前執行的函數
737
			#$result["content"]["byName"],剔除掉特定元素的陣列,使用原來陣列的key來儲存.
737
			#$result["content"]["byName"],剔除掉特定元素的陣列,使用原來陣列的key來儲存.
738
			#$result["content"]["byNumber"],剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
738
			#$result["content"]["byNumber"],剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
739
			#必填參數:
739
			#必填參數:
740
			$conf["arrays::eraseElement"]["rawInputArray"]=$inputTempArray;#要處理的原始數字陣列
740
			$conf["arrays::eraseElement"]["rawInputArray"]=$inputTempArray;#要處理的原始數字陣列
741
			$conf["arrays::eraseElement"]["eraseElementKey"]=(string)$getMaxValue["key"];#要移除的元素key值  
741
			$conf["arrays::eraseElement"]["eraseElementKey"]=(string)$getMaxValue["key"];#要移除的元素key值
742
			$eraseElement=arrays::eraseElement($conf["arrays::eraseElement"]);
742
			$eraseElement=arrays::eraseElement($conf["arrays::eraseElement"]);
743
			unset($conf["arrays::eraseElement"]);
743
			unset($conf["arrays::eraseElement"]);
744
			
744
 
745
			#如果移除最大值元素失敗
745
			#如果移除最大值元素失敗
746
			if($eraseElement["status"]=="false"){
746
			if($eraseElement["status"]=="false"){
747
				
747
 
748
				#設置執行失敗
748
				#設置執行失敗
749
				$result["status"]="false";
749
				$result["status"]="false";
750
				
750
 
751
				#設置執行錯誤訊息
751
				#設置執行錯誤訊息
752
				$result["error"]=$eraseElement;
752
				$result["error"]=$eraseElement;
753
 
753
 
754
				#回傳結果
754
				#回傳結果
755
				return $result;
755
				return $result;
756
				
756
 
757
				}#if end
757
				}#if end
758
			
758
 
759
			#如果移除元素過後不為空陣列	
759
			#如果移除元素過後不為空陣列
760
			if($eraseElement["empty"]=="false"){
760
			if($eraseElement["empty"]=="false"){
761
				
761
 
762
				#置換成移除掉最大數元素後的陣列
762
				#置換成移除掉最大數元素後的陣列
763
				$inputTempArray=$eraseElement["content"]["byName"];
763
				$inputTempArray=$eraseElement["content"]["byName"];
764
				
764
 
765
				}#if end	
765
				}#if end
766
				
766
 
767
			#反之
767
			#反之
768
			else{
768
			else{
769
				
769
 
770
				#設成空陣列
770
				#設成空陣列
771
				$inputTempArray=array();
771
				$inputTempArray=array();
772
				
772
 
773
				}#else end
773
				}#else end
774
			
774
 
775
			#依據順位儲存最大的數字元素
775
			#依據順位儲存最大的數字元素
776
			$result["value"][$count]=$getMaxValue["value"];
776
			$result["value"][$count]=$getMaxValue["value"];
777
			$result["key"][$count]=$getMaxValue["key"];
777
			$result["key"][$count]=$getMaxValue["key"];
778
			$result["content"][$count]=$getMaxValue["value"];
778
			$result["content"][$count]=$getMaxValue["value"];
779
			
779
 
780
			#計數加一
780
			#計數加一
781
			$count++;
781
			$count++;
782
			
782
 
783
			}#while end
783
			}#while end
784
					
784
 
785
		#如果$conf["asc"]爲"true"
785
		#如果$conf["asc"]爲"true"
786
		if($conf["asc"]=="true"){
786
		if($conf["asc"]=="true"){
787
			
787
 
788
			#函式說明:
788
			#函式說明:
789
			#將陣列倒置
789
			#將陣列倒置
790
			#回傳結果:
790
			#回傳結果:
791
			#$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗.
791
			#$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗.
792
			#$result["error"],錯誤訊息陣列.
792
			#$result["error"],錯誤訊息陣列.
Line 796... Line 796...
796
			$conf["arrays::convertArray"]["inputArray"]=$result["value"];#要倒置的陣列.
796
			$conf["arrays::convertArray"]["inputArray"]=$result["value"];#要倒置的陣列.
797
			#參考資料來源:
797
			#參考資料來源:
798
			#http://tw2.php.net/array_reverse => 陣列倒置的內建涵式.
798
			#http://tw2.php.net/array_reverse => 陣列倒置的內建涵式.
799
			$convertArray=arrays::convertArray($conf["arrays::convertArray"]);
799
			$convertArray=arrays::convertArray($conf["arrays::convertArray"]);
800
			unset($conf["arrays::convertArray"]);
800
			unset($conf["arrays::convertArray"]);
801
			
801
 
802
			#如果轉置陣列失敗
802
			#如果轉置陣列失敗
803
			if($convertArray["status"]=="false"){
803
			if($convertArray["status"]=="false"){
804
				
804
 
805
				#設置執行失敗
805
				#設置執行失敗
806
				$result["status"]="false";
806
				$result["status"]="false";
807
				
807
 
808
				#設置執行錯誤訊息
808
				#設置執行錯誤訊息
809
				$result["error"]=$convertArray;
809
				$result["error"]=$convertArray;
810
 
810
 
811
				#回傳結果
811
				#回傳結果
812
				return $result;
812
				return $result;
813
				
813
 
814
				}#if end
814
				}#if end
815
			
815
 
816
			#取得轉置後的 $result["value"] 陣列
816
			#取得轉置後的 $result["value"] 陣列
817
			$result["value"]=$convertArray["convertArray"];
817
			$result["value"]=$convertArray["convertArray"];
818
			
818
 
819
			#函式說明:
819
			#函式說明:
820
			#將陣列倒置
820
			#將陣列倒置
821
			#回傳結果:
821
			#回傳結果:
822
			#$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗.
822
			#$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗.
823
			#$result["error"],錯誤訊息陣列.
823
			#$result["error"],錯誤訊息陣列.
Line 827... Line 827...
827
			$conf["arrays::convertArray"]["inputArray"]=$result["key"];#要倒置的陣列.
827
			$conf["arrays::convertArray"]["inputArray"]=$result["key"];#要倒置的陣列.
828
			#參考資料來源:
828
			#參考資料來源:
829
			#http://tw2.php.net/array_reverse => 陣列倒置的內建涵式.
829
			#http://tw2.php.net/array_reverse => 陣列倒置的內建涵式.
830
			$convertArray=arrays::convertArray($conf["arrays::convertArray"]);
830
			$convertArray=arrays::convertArray($conf["arrays::convertArray"]);
831
			unset($conf["arrays::convertArray"]);
831
			unset($conf["arrays::convertArray"]);
832
			
832
 
833
			#如果轉置陣列失敗
833
			#如果轉置陣列失敗
834
			if($convertArray["status"]=="false"){
834
			if($convertArray["status"]=="false"){
835
				
835
 
836
				#設置執行失敗
836
				#設置執行失敗
837
				$result["status"]="false";
837
				$result["status"]="false";
838
				
838
 
839
				#設置執行錯誤訊息
839
				#設置執行錯誤訊息
840
				$result["error"]=$convertArray;
840
				$result["error"]=$convertArray;
841
 
841
 
842
				#回傳結果
842
				#回傳結果
843
				return $result;
843
				return $result;
844
				
844
 
845
				}#if end
845
				}#if end
846
			
846
 
847
			#取得轉置後的 $result["key"] 陣列
847
			#取得轉置後的 $result["key"] 陣列
848
			$result["key"]=$convertArray["convertArray"];
848
			$result["key"]=$convertArray["convertArray"];
849
		
849
 
850
			#函式說明:
850
			#函式說明:
851
			#將陣列倒置
851
			#將陣列倒置
852
			#回傳結果:
852
			#回傳結果:
853
			#$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗.
853
			#$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗.
854
			#$result["error"],錯誤訊息陣列.
854
			#$result["error"],錯誤訊息陣列.
Line 858... Line 858...
858
			$conf["arrays::convertArray"]["inputArray"]=$result["content"];#要倒置的陣列.
858
			$conf["arrays::convertArray"]["inputArray"]=$result["content"];#要倒置的陣列.
859
			#參考資料來源:
859
			#參考資料來源:
860
			#http://tw2.php.net/array_reverse => 陣列倒置的內建涵式.
860
			#http://tw2.php.net/array_reverse => 陣列倒置的內建涵式.
861
			$convertArray=arrays::convertArray($conf["arrays::convertArray"]);
861
			$convertArray=arrays::convertArray($conf["arrays::convertArray"]);
862
			unset($conf["arrays::convertArray"]);
862
			unset($conf["arrays::convertArray"]);
863
			
863
 
864
			#如果轉置陣列失敗
864
			#如果轉置陣列失敗
865
			if($convertArray["status"]=="false"){
865
			if($convertArray["status"]=="false"){
866
				
866
 
867
				#設置執行失敗
867
				#設置執行失敗
868
				$result["status"]="false";
868
				$result["status"]="false";
869
				
869
 
870
				#設置執行錯誤訊息
870
				#設置執行錯誤訊息
871
				$result["error"]=$convertArray;
871
				$result["error"]=$convertArray;
872
 
872
 
873
				#回傳結果
873
				#回傳結果
874
				return $result;
874
				return $result;
875
				
875
 
876
				}#if end
876
				}#if end
877
			
877
 
878
			#取得轉置後的 $result["content"] 陣列
878
			#取得轉置後的 $result["content"] 陣列
879
			$result["content"]=$convertArray["convertArray"];
879
			$result["content"]=$convertArray["convertArray"];
880
		
880
 
881
			}#if end
881
			}#if end
882
						
882
 
883
		#設置執行正常
883
		#設置執行正常
884
		$result["status"]="true";	
884
		$result["status"]="true";
885
			
885
 
886
		#回傳結果
886
		#回傳結果
887
		return $result;
887
		return $result;
888
		
888
 
889
		}#function arrangeNum end
889
		}#function arrangeNum end
890
 
890
 
891
	/*
891
	/*
892
	#函式說明:
892
	#函式說明:
893
	#將數值透過 z-score normalization(zero-mean normalization) 進行正規化,結果會回傳一個陣列 。
893
	#將數值透過 z-score normalization(zero-mean normalization) 進行正規化,結果會回傳一個陣列 。
Line 908... Line 908...
908
	*/
908
	*/
909
	public static function zScoreNormalization($conf){
909
	public static function zScoreNormalization($conf){
910
 
910
 
911
		#初始化要回傳的內容
911
		#初始化要回傳的內容
912
		$result=array();
912
		$result=array();
913
		
913
 
914
		#記錄當前執行的函數名稱
914
		#記錄當前執行的函數名稱
915
		$result["function"]=__FUNCTION__;
915
		$result["function"]=__FUNCTION__;
916
 
916
 
917
		#如果 $conf 不為陣列
917
		#如果 $conf 不為陣列
918
		if(gettype($conf)!="array"){
918
		if(gettype($conf)!="array"){
919
			
919
 
920
			#設置執行失敗
920
			#設置執行失敗
921
			$result["status"]="false";
921
			$result["status"]="false";
922
			
922
 
923
			#設置執行錯誤訊息
923
			#設置執行錯誤訊息
924
			$result["error"][]="\$conf變數須為陣列形態";
924
			$result["error"][]="\$conf變數須為陣列形態";
925
 
925
 
926
			#如果傳入的參數為 null
926
			#如果傳入的參數為 null
927
			if($conf==null){
927
			if($conf==null){
928
				
928
 
929
				#設置執行錯誤訊息
929
				#設置執行錯誤訊息
930
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
930
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
931
				
931
 
932
				}#if end
932
				}#if end
933
 
933
 
934
			#回傳結果
934
			#回傳結果
935
			return $result;
935
			return $result;
936
			
936
 
937
			}#if end
937
			}#if end
938
 
938
 
939
		#檢查參數
939
		#檢查參數
940
		#函式說明:
940
		#函式說明:
941
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
941
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 952... Line 952...
952
		#必填寫的參數:
952
		#必填寫的參數:
953
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
953
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
954
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
954
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
955
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
955
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
956
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
956
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
957
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
957
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
958
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
958
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
959
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
959
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
960
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
960
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
961
		#可以省略的參數:
961
		#可以省略的參數:
962
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
962
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
963
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
963
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
964
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
964
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
965
		#$conf["skipableVariableName"]=array();
965
		#$conf["skipableVariableName"]=array();
966
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
966
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
967
		#$conf["skipableVariableType"]=array();
967
		#$conf["skipableVariableType"]=array();
968
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
968
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
969
		#$conf["skipableVarDefaultValue"]=array("");
969
		#$conf["skipableVarDefaultValue"]=array("");
970
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
970
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
971
		#$conf["arrayCountEqualCheck"][]=array();
971
		#$conf["arrayCountEqualCheck"][]=array();
Line 974... Line 974...
974
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
974
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
975
		unset($conf["variableCheck::checkArguments"]);
975
		unset($conf["variableCheck::checkArguments"]);
976
 
976
 
977
		#如果檢查參數失敗
977
		#如果檢查參數失敗
978
		if($checkArguments["status"]=="false"){
978
		if($checkArguments["status"]=="false"){
979
			
979
 
980
			#設置執行失敗
980
			#設置執行失敗
981
			$result["status"]="false";
981
			$result["status"]="false";
982
			
982
 
983
			#設置執行錯誤訊息
983
			#設置執行錯誤訊息
984
			$result["error"]=$checkArguments;
984
			$result["error"]=$checkArguments;
985
 
985
 
986
			#回傳結果
986
			#回傳結果
987
			return $result;
987
			return $result;
988
			
988
 
989
			}#if end
989
			}#if end
990
 
990
 
991
		#如果檢查不通過
991
		#如果檢查不通過
992
		if($checkArguments["passed"]=="false"){
992
		if($checkArguments["passed"]=="false"){
993
			
993
 
994
			#設置執行失敗
994
			#設置執行失敗
995
			$result["status"]="false";
995
			$result["status"]="false";
996
			
996
 
997
			#設置執行錯誤訊息
997
			#設置執行錯誤訊息
998
			$result["error"]=$checkArguments;
998
			$result["error"]=$checkArguments;
999
 
999
 
1000
			#回傳結果
1000
			#回傳結果
1001
			return $result;
1001
			return $result;
1002
			
1002
 
1003
			}#if end
1003
			}#if end
1004
 
1004
 
1005
		#取得平均數
1005
		#取得平均數
1006
		#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
1006
		#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
1007
		#$result["error"],錯誤訊息陣列.
1007
		#$result["error"],錯誤訊息陣列.
Line 1011... Line 1011...
1011
		$mean=math::computeMean($conf["math"]["computeMean"]);
1011
		$mean=math::computeMean($conf["math"]["computeMean"]);
1012
		unset($conf["math"]["computeMean"]);
1012
		unset($conf["math"]["computeMean"]);
1013
 
1013
 
1014
		#如果取得平均數失敗
1014
		#如果取得平均數失敗
1015
		if($mean["status"]=="false"){
1015
		if($mean["status"]=="false"){
1016
			
1016
 
1017
			#設置執行失敗
1017
			#設置執行失敗
1018
			$result["status"]="false";
1018
			$result["status"]="false";
1019
			
1019
 
1020
			#設置執行錯誤訊息
1020
			#設置執行錯誤訊息
1021
			$result["error"]=$mean;
1021
			$result["error"]=$mean;
1022
 
1022
 
1023
			#回傳結果
1023
			#回傳結果
1024
			return $result;
1024
			return $result;
1025
			
1025
 
1026
			}#if end
1026
			}#if end
1027
			
1027
 
1028
		#取得平均數
1028
		#取得平均數
1029
		$mean=$mean["content"];
1029
		$mean=$mean["content"];
1030
 
1030
 
1031
		#取得標準差
1031
		#取得標準差
1032
		#回傳結果:
1032
		#回傳結果:
Line 1038... Line 1038...
1038
		$standardDeviaction=math::computeStandardDeviation($conf["math"]["computeStandardDeviation"]);
1038
		$standardDeviaction=math::computeStandardDeviation($conf["math"]["computeStandardDeviation"]);
1039
		unset($conf["math"]["computeStandardDeviation"]);
1039
		unset($conf["math"]["computeStandardDeviation"]);
1040
 
1040
 
1041
		#如果 取得標準差 失敗
1041
		#如果 取得標準差 失敗
1042
		if($standardDeviaction["status"]=="false"){
1042
		if($standardDeviaction["status"]=="false"){
1043
			
1043
 
1044
			#設置執行失敗
1044
			#設置執行失敗
1045
			$result["status"]="false";
1045
			$result["status"]="false";
1046
			
1046
 
1047
			#設置執行錯誤訊息
1047
			#設置執行錯誤訊息
1048
			$result["error"]=$standardDeviaction;
1048
			$result["error"]=$standardDeviaction;
1049
 
1049
 
1050
			#回傳結果
1050
			#回傳結果
1051
			return $result;
1051
			return $result;
1052
			
1052
 
1053
			}#if end
1053
			}#if end
1054
			
1054
 
1055
		#取得標準差
1055
		#取得標準差
1056
		$standardDeviaction=$standardDeviaction["content"];
1056
		$standardDeviaction=$standardDeviaction["content"];
1057
 
1057
 
1058
		#取得資料筆數
1058
		#取得資料筆數
1059
		$rawDataCount=count($conf["rawDataArray"]);
1059
		$rawDataCount=count($conf["rawDataArray"]);
Line 1124... Line 1124...
1124
	*/
1124
	*/
1125
	public static function computeCovarianceOfNumericData(&$conf){
1125
	public static function computeCovarianceOfNumericData(&$conf){
1126
 
1126
 
1127
		#初始化要回傳的內容
1127
		#初始化要回傳的內容
1128
		$result=array();
1128
		$result=array();
1129
		
1129
 
1130
		#記錄當前執行的函數名稱
1130
		#記錄當前執行的函數名稱
1131
		$result["function"]=__FUNCTION__;
1131
		$result["function"]=__FUNCTION__;
1132
 
1132
 
1133
		#如果 $conf 不為陣列
1133
		#如果 $conf 不為陣列
1134
		if(gettype($conf)!="array"){
1134
		if(gettype($conf)!="array"){
1135
			
1135
 
1136
			#設置執行失敗
1136
			#設置執行失敗
1137
			$result["status"]="false";
1137
			$result["status"]="false";
1138
			
1138
 
1139
			#設置執行錯誤訊息
1139
			#設置執行錯誤訊息
1140
			$result["error"][]="\$conf變數須為陣列形態";
1140
			$result["error"][]="\$conf變數須為陣列形態";
1141
 
1141
 
1142
			#如果傳入的參數為 null
1142
			#如果傳入的參數為 null
1143
			if($conf==null){
1143
			if($conf==null){
1144
				
1144
 
1145
				#設置執行錯誤訊息
1145
				#設置執行錯誤訊息
1146
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1146
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1147
				
1147
 
1148
				}#if end
1148
				}#if end
1149
 
1149
 
1150
			#回傳結果
1150
			#回傳結果
1151
			return $result;
1151
			return $result;
1152
			
1152
 
1153
			}#if end
1153
			}#if end
1154
 
1154
 
1155
		#檢查參數
1155
		#檢查參數
1156
		#函式說明:
1156
		#函式說明:
1157
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1157
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 1168... Line 1168...
1168
		#必填寫的參數:
1168
		#必填寫的參數:
1169
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1169
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1170
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1170
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1171
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1171
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1172
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArrayA","rawDataArrayB");
1172
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArrayA","rawDataArrayB");
1173
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
1173
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
1174
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
1174
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
1175
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1175
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1176
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1176
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1177
		#可以省略的參數:
1177
		#可以省略的參數:
1178
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1178
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1179
		#$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1179
		#$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1180
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1180
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1181
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
1181
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
1182
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
1182
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1183
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1183
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1184
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1184
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1185
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
1185
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
1186
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1186
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1187
		#$conf["arrayCountEqualCheck"][]=array();
1187
		#$conf["arrayCountEqualCheck"][]=array();
Line 1190... Line 1190...
1190
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1190
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1191
		unset($conf["variableCheck::checkArguments"]);
1191
		unset($conf["variableCheck::checkArguments"]);
1192
 
1192
 
1193
		#如果檢查參數失敗
1193
		#如果檢查參數失敗
1194
		if($checkArguments["status"]=="false"){
1194
		if($checkArguments["status"]=="false"){
1195
			
1195
 
1196
			#設置執行失敗
1196
			#設置執行失敗
1197
			$result["status"]="false";
1197
			$result["status"]="false";
1198
			
1198
 
1199
			#設置執行錯誤訊息
1199
			#設置執行錯誤訊息
1200
			$result["error"]=$checkArguments;
1200
			$result["error"]=$checkArguments;
1201
 
1201
 
1202
			#回傳結果
1202
			#回傳結果
1203
			return $result;
1203
			return $result;
1204
			
1204
 
1205
			}#if end
1205
			}#if end
1206
			
1206
 
1207
		#如果檢查不通過
1207
		#如果檢查不通過
1208
		if($checkArguments["passed"]=="false"){
1208
		if($checkArguments["passed"]=="false"){
1209
			
1209
 
1210
			#設置執行失敗
1210
			#設置執行失敗
1211
			$result["status"]="false";
1211
			$result["status"]="false";
1212
			
1212
 
1213
			#設置執行錯誤訊息
1213
			#設置執行錯誤訊息
1214
			$result["error"]=$checkArguments;
1214
			$result["error"]=$checkArguments;
1215
 
1215
 
1216
			#回傳結果
1216
			#回傳結果
1217
			return $result;
1217
			return $result;
1218
			
1218
 
1219
			}#if end
1219
			}#if end
1220
 
1220
 
1221
		#A的期望值等於A的平均數
1221
		#A的期望值等於A的平均數
1222
		#函式說明:
1222
		#函式說明:
1223
		#計算平均數
1223
		#計算平均數
Line 1230... Line 1230...
1230
		$meanA=math::computeMean($conf["math::computeMean"]);
1230
		$meanA=math::computeMean($conf["math::computeMean"]);
1231
		unset($conf["math::computeMean"]);
1231
		unset($conf["math::computeMean"]);
1232
 
1232
 
1233
		#如果取得平均數A失敗
1233
		#如果取得平均數A失敗
1234
		if($meanA["status"]=="false"){
1234
		if($meanA["status"]=="false"){
1235
			
1235
 
1236
			#設置執行失敗
1236
			#設置執行失敗
1237
			$result["status"]="false";
1237
			$result["status"]="false";
1238
			
1238
 
1239
			#設置執行錯誤訊息
1239
			#設置執行錯誤訊息
1240
			$result["error"]=$meanA;
1240
			$result["error"]=$meanA;
1241
 
1241
 
1242
			#回傳結果
1242
			#回傳結果
1243
			return $result;
1243
			return $result;
1244
			
1244
 
1245
			}#if end
1245
			}#if end
1246
 
1246
 
1247
		#取得平均數A
1247
		#取得平均數A
1248
		$meanA=$meanA["content"];
1248
		$meanA=$meanA["content"];
1249
 
1249
 
Line 1259... Line 1259...
1259
		$meanB=math::computeMean($conf["math::computeMean"]);
1259
		$meanB=math::computeMean($conf["math::computeMean"]);
1260
		unset($conf["math::computeMean"]);
1260
		unset($conf["math::computeMean"]);
1261
 
1261
 
1262
		#如果取得平均數B失敗
1262
		#如果取得平均數B失敗
1263
		if($meanA["status"]=="false"){
1263
		if($meanA["status"]=="false"){
1264
			
1264
 
1265
			#設置執行失敗
1265
			#設置執行失敗
1266
			$result["status"]="false";
1266
			$result["status"]="false";
1267
			
1267
 
1268
			#設置執行錯誤訊息
1268
			#設置執行錯誤訊息
1269
			$result["error"]=$meanB;
1269
			$result["error"]=$meanB;
1270
 
1270
 
1271
			#回傳結果
1271
			#回傳結果
1272
			return $result;
1272
			return $result;
1273
			
1273
 
1274
			}#if end
1274
			}#if end
1275
 
1275
 
1276
		#取得平均數B
1276
		#取得平均數B
1277
		$meanB=$meanB["content"];
1277
		$meanB=$meanB["content"];
1278
 
1278
 
Line 1290... Line 1290...
1290
 
1290
 
1291
			}#迴圈結束
1291
			}#迴圈結束
1292
 
1292
 
1293
		#儲存結果
1293
		#儲存結果
1294
		$result["content"]=$sum/$dataCounts;
1294
		$result["content"]=$sum/$dataCounts;
1295
			
1295
 
1296
		#設置執行正常
1296
		#設置執行正常
1297
		$result["status"]="true";
1297
		$result["status"]="true";
1298
 
1298
 
1299
		#回傳結果
1299
		#回傳結果
1300
		return $result;
1300
		return $result;
Line 1320... Line 1320...
1320
	*/
1320
	*/
1321
	public static function getMedianNum(&$conf){
1321
	public static function getMedianNum(&$conf){
1322
 
1322
 
1323
		#初始化要回傳的內容
1323
		#初始化要回傳的內容
1324
		$result=array();
1324
		$result=array();
1325
		
1325
 
1326
		#記錄當前執行的函數名稱
1326
		#記錄當前執行的函數名稱
1327
		$result["function"]=__FUNCTION__;
1327
		$result["function"]=__FUNCTION__;
1328
 
1328
 
1329
		#如果 $conf 不為陣列
1329
		#如果 $conf 不為陣列
1330
		if(gettype($conf)!="array"){
1330
		if(gettype($conf)!="array"){
1331
			
1331
 
1332
			#設置執行失敗
1332
			#設置執行失敗
1333
			$result["status"]="false";
1333
			$result["status"]="false";
1334
			
1334
 
1335
			#設置執行錯誤訊息
1335
			#設置執行錯誤訊息
1336
			$result["error"][]="\$conf變數須為陣列形態";
1336
			$result["error"][]="\$conf變數須為陣列形態";
1337
 
1337
 
1338
			#如果傳入的參數為 null
1338
			#如果傳入的參數為 null
1339
			if($conf==null){
1339
			if($conf==null){
1340
				
1340
 
1341
				#設置執行錯誤訊息
1341
				#設置執行錯誤訊息
1342
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1342
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1343
				
1343
 
1344
				}#if end
1344
				}#if end
1345
 
1345
 
1346
			#回傳結果
1346
			#回傳結果
1347
			return $result;
1347
			return $result;
1348
			
1348
 
1349
			}#if end
1349
			}#if end
1350
 
1350
 
1351
		#檢查參數
1351
		#檢查參數
1352
		#函式說明:
1352
		#函式說明:
1353
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1353
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 1364... Line 1364...
1364
		#必填寫的參數:
1364
		#必填寫的參數:
1365
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1365
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1366
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1366
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1367
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1367
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1368
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
1368
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
1369
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
1369
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
1370
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
1370
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
1371
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1371
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1372
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1372
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1373
		#可以省略的參數:
1373
		#可以省略的參數:
1374
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1374
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1375
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1375
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1376
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1376
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1377
		#$conf["skipableVariableName"]=array();
1377
		#$conf["skipableVariableName"]=array();
1378
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
1378
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1379
		#$conf["skipableVariableType"]=array();
1379
		#$conf["skipableVariableType"]=array();
1380
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1380
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1381
		#$conf["skipableVarDefaultValue"]=array("");
1381
		#$conf["skipableVarDefaultValue"]=array("");
1382
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1382
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1383
		#$conf["arrayCountEqualCheck"][]=array();
1383
		#$conf["arrayCountEqualCheck"][]=array();
Line 1386... Line 1386...
1386
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1386
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1387
		unset($conf["variableCheck::checkArguments"]);
1387
		unset($conf["variableCheck::checkArguments"]);
1388
 
1388
 
1389
		#如果檢查參數失敗
1389
		#如果檢查參數失敗
1390
		if($checkArguments["status"]=="false"){
1390
		if($checkArguments["status"]=="false"){
1391
			
1391
 
1392
			#設置執行失敗
1392
			#設置執行失敗
1393
			$result["status"]="false";
1393
			$result["status"]="false";
1394
			
1394
 
1395
			#設置執行錯誤訊息
1395
			#設置執行錯誤訊息
1396
			$result["error"]=$checkArguments;
1396
			$result["error"]=$checkArguments;
1397
 
1397
 
1398
			#回傳結果
1398
			#回傳結果
1399
			return $result;
1399
			return $result;
1400
			
1400
 
1401
			}#if end
1401
			}#if end
1402
			
1402
 
1403
		#如果檢查不通過
1403
		#如果檢查不通過
1404
		if($checkArguments["passed"]=="false"){
1404
		if($checkArguments["passed"]=="false"){
1405
			
1405
 
1406
			#設置執行失敗
1406
			#設置執行失敗
1407
			$result["status"]="false";
1407
			$result["status"]="false";
1408
			
1408
 
1409
			#設置執行錯誤訊息
1409
			#設置執行錯誤訊息
1410
			$result["error"]=$checkArguments;
1410
			$result["error"]=$checkArguments;
1411
 
1411
 
1412
			#回傳結果
1412
			#回傳結果
1413
			return $result;
1413
			return $result;
1414
			
1414
 
1415
			}#if end
1415
			}#if end
1416
 
1416
 
1417
		#初始化要回傳的中間數
1417
		#初始化要回傳的中間數
1418
		$result["content"]="";
1418
		$result["content"]="";
1419
 
1419
 
Line 1468... Line 1468...
1468
	#https://zh.wikipedia.org/zh-tw/%E5%9B%9B%E5%88%86%E4%BD%8D%E6%95%B0
1468
	#https://zh.wikipedia.org/zh-tw/%E5%9B%9B%E5%88%86%E4%BD%8D%E6%95%B0
1469
	#備註:
1469
	#備註:
1470
	#無.
1470
	#無.
1471
	*/
1471
	*/
1472
	public static function getQuartile(&$conf){
1472
	public static function getQuartile(&$conf){
1473
		
1473
 
1474
		#初始化要回傳的內容
1474
		#初始化要回傳的內容
1475
		$result=array();
1475
		$result=array();
1476
		
1476
 
1477
		#記錄當前執行的函數名稱
1477
		#記錄當前執行的函數名稱
1478
		$result["function"]=__FUNCTION__;
1478
		$result["function"]=__FUNCTION__;
1479
 
1479
 
1480
		#如果 $conf 不為陣列
1480
		#如果 $conf 不為陣列
1481
		if(gettype($conf)!="array"){
1481
		if(gettype($conf)!="array"){
1482
			
1482
 
1483
			#設置執行失敗
1483
			#設置執行失敗
1484
			$result["status"]="false";
1484
			$result["status"]="false";
1485
			
1485
 
1486
			#設置執行錯誤訊息
1486
			#設置執行錯誤訊息
1487
			$result["error"][]="\$conf變數須為陣列形態";
1487
			$result["error"][]="\$conf變數須為陣列形態";
1488
 
1488
 
1489
			#如果傳入的參數為 null
1489
			#如果傳入的參數為 null
1490
			if($conf==null){
1490
			if($conf==null){
1491
				
1491
 
1492
				#設置執行錯誤訊息
1492
				#設置執行錯誤訊息
1493
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1493
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1494
				
1494
 
1495
				}#if end
1495
				}#if end
1496
 
1496
 
1497
			#回傳結果
1497
			#回傳結果
1498
			return $result;
1498
			return $result;
1499
			
1499
 
1500
			}#if end
1500
			}#if end
1501
 
1501
 
1502
		#檢查參數
1502
		#檢查參數
1503
		#函式說明:
1503
		#函式說明:
1504
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1504
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 1515... Line 1515...
1515
		#必填寫的參數:
1515
		#必填寫的參數:
1516
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1516
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1517
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1517
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1518
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1518
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1519
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
1519
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
1520
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
1520
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
1521
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
1521
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
1522
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1522
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1523
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1523
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1524
		#可以省略的參數:
1524
		#可以省略的參數:
1525
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1525
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1526
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1526
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1527
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1527
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1528
		#$conf["skipableVariableName"]=array();
1528
		#$conf["skipableVariableName"]=array();
1529
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
1529
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1530
		#$conf["skipableVariableType"]=array();
1530
		#$conf["skipableVariableType"]=array();
1531
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1531
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1532
		#$conf["skipableVarDefaultValue"]=array("");
1532
		#$conf["skipableVarDefaultValue"]=array("");
1533
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1533
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1534
		#$conf["arrayCountEqualCheck"][]=array();
1534
		#$conf["arrayCountEqualCheck"][]=array();
Line 1537... Line 1537...
1537
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1537
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1538
		unset($conf["variableCheck::checkArguments"]);
1538
		unset($conf["variableCheck::checkArguments"]);
1539
 
1539
 
1540
		#如果檢查參數失敗
1540
		#如果檢查參數失敗
1541
		if($checkArguments["status"]=="false"){
1541
		if($checkArguments["status"]=="false"){
1542
			
1542
 
1543
			#設置執行失敗
1543
			#設置執行失敗
1544
			$result["status"]="false";
1544
			$result["status"]="false";
1545
			
1545
 
1546
			#設置執行錯誤訊息
1546
			#設置執行錯誤訊息
1547
			$result["error"]=$checkArguments;
1547
			$result["error"]=$checkArguments;
1548
 
1548
 
1549
			#回傳結果
1549
			#回傳結果
1550
			return $result;
1550
			return $result;
1551
			
1551
 
1552
			}#if end
1552
			}#if end
1553
 
1553
 
1554
		#如果檢查不通過
1554
		#如果檢查不通過
1555
		if($checkArguments["passed"]=="false"){
1555
		if($checkArguments["passed"]=="false"){
1556
			
1556
 
1557
			#設置執行失敗
1557
			#設置執行失敗
1558
			$result["status"]="false";
1558
			$result["status"]="false";
1559
			
1559
 
1560
			#設置執行錯誤訊息
1560
			#設置執行錯誤訊息
1561
			$result["error"]=$checkArguments;
1561
			$result["error"]=$checkArguments;
1562
 
1562
 
1563
			#回傳結果
1563
			#回傳結果
1564
			return $result;
1564
			return $result;
1565
			
1565
 
1566
			}#if end
1566
			}#if end
1567
		
1567
 
1568
		#排序原始數據使之從小到大
1568
		#排序原始數據使之從小到大
1569
		#函式說明:
1569
		#函式說明:
1570
		#排列一組數字
1570
		#排列一組數字
1571
		#回傳結果:
1571
		#回傳結果:
1572
		#經過排序後依照遞增或遞減順序排列的數字陣列
1572
		#經過排序後依照遞增或遞減順序排列的數字陣列
Line 1580... Line 1580...
1580
		$conf["math::arrangeNum"]["rawDataArray"]=$conf["rawDataArray"];#要排序的數字陣列
1580
		$conf["math::arrangeNum"]["rawDataArray"]=$conf["rawDataArray"];#要排序的數字陣列
1581
		#可省略參數:
1581
		#可省略參數:
1582
		$conf["math::arrangeNum"]["asc"]="true";#如果爲"true"則排序順變爲從小到大,若為"false"則為從大到小,預設為"false".
1582
		$conf["math::arrangeNum"]["asc"]="true";#如果爲"true"則排序順變爲從小到大,若為"false"則為從大到小,預設為"false".
1583
		$arrangeNum=math::arrangeNum($conf["math::arrangeNum"]);
1583
		$arrangeNum=math::arrangeNum($conf["math::arrangeNum"]);
1584
		unset($conf["math::arrangeNum"]);
1584
		unset($conf["math::arrangeNum"]);
1585
					
1585
 
1586
		#如果 排序原始數據 失敗
1586
		#如果 排序原始數據 失敗
1587
		if($arrangeNum["status"]=="false"){
1587
		if($arrangeNum["status"]=="false"){
1588
			
1588
 
1589
			#設置執行失敗
1589
			#設置執行失敗
1590
			$result["status"]="false";
1590
			$result["status"]="false";
1591
			
1591
 
1592
			#設置執行錯誤訊息
1592
			#設置執行錯誤訊息
1593
			$result["error"]=$arrangeNum;
1593
			$result["error"]=$arrangeNum;
1594
 
1594
 
1595
			#回傳結果
1595
			#回傳結果
1596
			return $result;
1596
			return $result;
1597
			
1597
 
1598
			}#if end
1598
			}#if end
1599
		
1599
 
1600
		#取得Q2
1600
		#取得Q2
1601
		#函式說明:
1601
		#函式說明:
1602
		#計算一組數據的中間數值
1602
		#計算一組數據的中間數值
1603
		#回傳結果:
1603
		#回傳結果:
1604
		#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
1604
		#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
Line 1607... Line 1607...
1607
		#$result["content"],最一組數據的中間數值.
1607
		#$result["content"],最一組數據的中間數值.
1608
		#必填參數:
1608
		#必填參數:
1609
		$conf["math"]["getMedianNum"]["rawDataArray"]=$arrangeNum["content"];#要進行計算的數據陣列
1609
		$conf["math"]["getMedianNum"]["rawDataArray"]=$arrangeNum["content"];#要進行計算的數據陣列
1610
		$mediaNum=math::getMedianNum($conf["math"]["getMedianNum"]);
1610
		$mediaNum=math::getMedianNum($conf["math"]["getMedianNum"]);
1611
		unset($conf["math"]["getMedianNum"]);
1611
		unset($conf["math"]["getMedianNum"]);
1612
		
1612
 
1613
		#如果取得Q2失敗
1613
		#如果取得Q2失敗
1614
		if($mediaNum["status"]=="false"){
1614
		if($mediaNum["status"]=="false"){
1615
			
1615
 
1616
			#設置執行失敗
1616
			#設置執行失敗
1617
			$result["status"]="false";
1617
			$result["status"]="false";
1618
			
1618
 
1619
			#設置執行錯誤訊息
1619
			#設置執行錯誤訊息
1620
			$result["error"]=$mediaNum;
1620
			$result["error"]=$mediaNum;
1621
 
1621
 
1622
			#回傳結果
1622
			#回傳結果
1623
			return $result;
1623
			return $result;
1624
			
1624
 
1625
			}#if end
1625
			}#if end
1626
		
1626
 
1627
		#取得Q2
1627
		#取得Q2
1628
		$result["Q2"]=$mediaNum["content"];
1628
		$result["Q2"]=$mediaNum["content"];
1629
		
1629
 
1630
		#取得原始輸入陣列的元素數目
1630
		#取得原始輸入陣列的元素數目
1631
		$varCount=count($arrangeNum["content"]);
1631
		$varCount=count($arrangeNum["content"]);
1632
		
1632
 
1633
		#初始化儲存用於計算Q1的元素陣列
1633
		#初始化儲存用於計算Q1的元素陣列
1634
		$q2RawArray=array();
1634
		$q2RawArray=array();
1635
		
1635
 
1636
		#另存小於等於Q2元素的陣列
1636
		#另存小於等於Q2元素的陣列
1637
		for($i=0;$i<$varCount;$i++){
1637
		for($i=0;$i<$varCount;$i++){
1638
			
1638
 
1639
			#取得小於等於Q2的元素
1639
			#取得小於等於Q2的元素
1640
			if($arrangeNum["content"][$i]<=$result["Q2"]){
1640
			if($arrangeNum["content"][$i]<=$result["Q2"]){
1641
				
1641
 
1642
				#取得小於等於Q2的元素
1642
				#取得小於等於Q2的元素
1643
				$q2RawArray[]=$arrangeNum["content"][$i];
1643
				$q2RawArray[]=$arrangeNum["content"][$i];
1644
				
1644
 
1645
				}#if end
1645
				}#if end
1646
			
1646
 
1647
			}#for end
1647
			}#for end
1648
			
1648
 
1649
		#求得Q1
1649
		#求得Q1
1650
		#函式說明:
1650
		#函式說明:
1651
		#計算一組數據的中間數值
1651
		#計算一組數據的中間數值
1652
		#回傳結果:
1652
		#回傳結果:
1653
		#一組數據的中間數值
1653
		#一組數據的中間數值
1654
		#必填參數:
1654
		#必填參數:
1655
		$conf["math"]["getMedianNum"]["rawDataArray"]=$q2RawArray;#要進行計算的數據陣列
1655
		$conf["math"]["getMedianNum"]["rawDataArray"]=$q2RawArray;#要進行計算的數據陣列
1656
		$mediaNum=math::getMedianNum($conf["math"]["getMedianNum"]);
1656
		$mediaNum=math::getMedianNum($conf["math"]["getMedianNum"]);
1657
		unset($conf["math"]["getMedianNum"]);
1657
		unset($conf["math"]["getMedianNum"]);
1658
	
1658
 
1659
		#如果取得Q1失敗
1659
		#如果取得Q1失敗
1660
		if($mediaNum["status"]=="false"){
1660
		if($mediaNum["status"]=="false"){
1661
 
1661
 
1662
			#設置執行失敗
1662
			#設置執行失敗
1663
			$result["status"]="false";
1663
			$result["status"]="false";
1664
			
1664
 
1665
			#設置執行錯誤訊息
1665
			#設置執行錯誤訊息
1666
			$result["error"]=$mediaNum;
1666
			$result["error"]=$mediaNum;
1667
 
1667
 
1668
			#回傳結果
1668
			#回傳結果
1669
			return $result;
1669
			return $result;
1670
			
1670
 
1671
			}#if end
1671
			}#if end
1672
	
1672
 
1673
		#取得Q1
1673
		#取得Q1
1674
		$result["Q1"]=$mediaNum["content"];
1674
		$result["Q1"]=$mediaNum["content"];
1675
	
1675
 
1676
		#初始化儲存用於計算Q3的元素陣列
1676
		#初始化儲存用於計算Q3的元素陣列
1677
		$q3RawArray=array();
1677
		$q3RawArray=array();
1678
		
1678
 
1679
		#另存大於等於Q2元素的陣列
1679
		#另存大於等於Q2元素的陣列
1680
		for($i=0;$i<$varCount;$i++){
1680
		for($i=0;$i<$varCount;$i++){
1681
			
1681
 
1682
			#取得小於等於Q2的元素
1682
			#取得小於等於Q2的元素
1683
			if($arrangeNum["content"][$i]>=$result["Q2"]){
1683
			if($arrangeNum["content"][$i]>=$result["Q2"]){
1684
				
1684
 
1685
				#取得小於等於Q2的元素
1685
				#取得小於等於Q2的元素
1686
				$q3RawArray[]=$arrangeNum["content"][$i];
1686
				$q3RawArray[]=$arrangeNum["content"][$i];
1687
				
1687
 
1688
				}#if end
1688
				}#if end
1689
			
1689
 
1690
			}#for end
1690
			}#for end
1691
			
1691
 
1692
		#求得Q3
1692
		#求得Q3
1693
		#函式說明:
1693
		#函式說明:
1694
		#計算一組數據的中間數值
1694
		#計算一組數據的中間數值
1695
		#回傳結果:
1695
		#回傳結果:
1696
		#一組數據的中間數值
1696
		#一組數據的中間數值
1697
		#必填參數:
1697
		#必填參數:
1698
		$conf["math"]["getMedianNum"]["rawDataArray"]=$q3RawArray;#要進行計算的數據陣列
1698
		$conf["math"]["getMedianNum"]["rawDataArray"]=$q3RawArray;#要進行計算的數據陣列
1699
		$mediaNum=math::getMedianNum($conf["math"]["getMedianNum"]);
1699
		$mediaNum=math::getMedianNum($conf["math"]["getMedianNum"]);
1700
		unset($conf["math"]["getMedianNum"]);
1700
		unset($conf["math"]["getMedianNum"]);
1701
			
1701
 
1702
		#如果 取得中位數 失敗
1702
		#如果 取得中位數 失敗
1703
		if($mediaNum["status"]=="false"){
1703
		if($mediaNum["status"]=="false"){
1704
			
1704
 
1705
			#設置執行失敗
1705
			#設置執行失敗
1706
			$result["status"]="false";
1706
			$result["status"]="false";
1707
			
1707
 
1708
			#設置執行錯誤訊息
1708
			#設置執行錯誤訊息
1709
			$result["error"]=$mediaNum;
1709
			$result["error"]=$mediaNum;
1710
 
1710
 
1711
			#回傳結果
1711
			#回傳結果
1712
			return $result;
1712
			return $result;
1713
			
1713
 
1714
			}#if end	
1714
			}#if end
1715
			
1715
 
1716
		#取得 Q3 
1716
		#取得 Q3
1717
		$result["Q3"]=$mediaNum["content"];
1717
		$result["Q3"]=$mediaNum["content"];
1718
			
1718
 
1719
		#設置執行正常
1719
		#設置執行正常
1720
		$result["status"]="true";	
1720
		$result["status"]="true";
1721
			
1721
 
1722
		#回傳結果
1722
		#回傳結果
1723
		return $result;
1723
		return $result;
1724
				
1724
 
1725
		}#function getQuarter end
1725
		}#function getQuarter end
1726
 
1726
 
1727
	/*
1727
	/*
1728
	#函式說明:
1728
	#函式說明:
1729
	#判斷在常態分佈的條件下針對單一變量會有那些 outlier(異常值),結果會回傳一個陣列。
1729
	#判斷在常態分佈的條件下針對單一變量會有那些 outlier(異常值),結果會回傳一個陣列。
Line 1736... Line 1736...
1736
	#必填參數:
1736
	#必填參數:
1737
	$conf["rawDataArray"];#爲原始數據的陣列
1737
	$conf["rawDataArray"];#爲原始數據的陣列
1738
	#可省略參數:
1738
	#可省略參數:
1739
	#無.
1739
	#無.
1740
	#參考資料來源:
1740
	#參考資料來源:
1741
	#http://zhidao.baidu.com/question/252394894.html	
1741
	#http://zhidao.baidu.com/question/252394894.html
1742
	#備註:
1742
	#備註:
1743
	#無.
1743
	#無.
1744
	*/
1744
	*/
1745
	public static function findOutlier(&$conf){
1745
	public static function findOutlier(&$conf){
1746
 
1746
 
1747
		#初始化要回傳的內容
1747
		#初始化要回傳的內容
1748
		$result=array();
1748
		$result=array();
1749
		
1749
 
1750
		#記錄當前執行的函數名稱
1750
		#記錄當前執行的函數名稱
1751
		$result["function"]=__FUNCTION__;
1751
		$result["function"]=__FUNCTION__;
1752
 
1752
 
1753
		#如果 $conf 不為陣列
1753
		#如果 $conf 不為陣列
1754
		if(gettype($conf)!="array"){
1754
		if(gettype($conf)!="array"){
1755
			
1755
 
1756
			#設置執行失敗
1756
			#設置執行失敗
1757
			$result["status"]="false";
1757
			$result["status"]="false";
1758
			
1758
 
1759
			#設置執行錯誤訊息
1759
			#設置執行錯誤訊息
1760
			$result["error"][]="\$conf變數須為陣列形態";
1760
			$result["error"][]="\$conf變數須為陣列形態";
1761
 
1761
 
1762
			#如果傳入的參數為 null
1762
			#如果傳入的參數為 null
1763
			if($conf==null){
1763
			if($conf==null){
1764
				
1764
 
1765
				#設置執行錯誤訊息
1765
				#設置執行錯誤訊息
1766
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1766
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1767
				
1767
 
1768
				}#if end
1768
				}#if end
1769
 
1769
 
1770
			#回傳結果
1770
			#回傳結果
1771
			return $result;
1771
			return $result;
1772
			
1772
 
1773
			}#if end
1773
			}#if end
1774
 
1774
 
1775
		#檢查參數
1775
		#檢查參數
1776
		#函式說明:
1776
		#函式說明:
1777
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1777
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 1788... Line 1788...
1788
		#必填寫的參數:
1788
		#必填寫的參數:
1789
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1789
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1790
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1790
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1791
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1791
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1792
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
1792
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
1793
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
1793
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
1794
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
1794
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
1795
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1795
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1796
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1796
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1797
		#可以省略的參數:
1797
		#可以省略的參數:
1798
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1798
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
1799
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1799
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1800
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1800
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1801
		#$conf["skipableVariableName"]=array();
1801
		#$conf["skipableVariableName"]=array();
1802
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
1802
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1803
		#$conf["skipableVariableType"]=array();
1803
		#$conf["skipableVariableType"]=array();
1804
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1804
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1805
		#$conf["skipableVarDefaultValue"]=array("");
1805
		#$conf["skipableVarDefaultValue"]=array("");
1806
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1806
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1807
		#$conf["arrayCountEqualCheck"][]=array();
1807
		#$conf["arrayCountEqualCheck"][]=array();
Line 1810... Line 1810...
1810
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1810
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1811
		unset($conf["variableCheck::checkArguments"]);
1811
		unset($conf["variableCheck::checkArguments"]);
1812
 
1812
 
1813
		#如果檢查參數失敗
1813
		#如果檢查參數失敗
1814
		if($checkArguments["status"]=="false"){
1814
		if($checkArguments["status"]=="false"){
1815
			
1815
 
1816
			#設置執行失敗
1816
			#設置執行失敗
1817
			$result["status"]="false";
1817
			$result["status"]="false";
1818
			
1818
 
1819
			#設置執行錯誤訊息
1819
			#設置執行錯誤訊息
1820
			$result["error"]=$checkArguments;
1820
			$result["error"]=$checkArguments;
1821
 
1821
 
1822
			#回傳結果
1822
			#回傳結果
1823
			return $result;
1823
			return $result;
1824
			
1824
 
1825
			}#if end
1825
			}#if end
1826
			
1826
 
1827
		#如果檢查不通過
1827
		#如果檢查不通過
1828
		if($checkArguments["passed"]=="false"){
1828
		if($checkArguments["passed"]=="false"){
1829
			
1829
 
1830
			#設置執行失敗
1830
			#設置執行失敗
1831
			$result["status"]="false";
1831
			$result["status"]="false";
1832
			
1832
 
1833
			#設置執行錯誤訊息
1833
			#設置執行錯誤訊息
1834
			$result["error"]=$checkArguments;
1834
			$result["error"]=$checkArguments;
1835
 
1835
 
1836
			#回傳結果
1836
			#回傳結果
1837
			return $result;
1837
			return $result;
1838
			
1838
 
1839
			}#if end
1839
			}#if end
1840
 
1840
 
1841
		#初始化沒有找到離群值
1841
		#初始化沒有找到離群值
1842
		$result["founded"]="false";
1842
		$result["founded"]="false";
1843
 
1843
 
Line 1854... Line 1854...
1854
		$rawDataArray=math::arrangeNum($conf["math"]["arrangeNum"]);
1854
		$rawDataArray=math::arrangeNum($conf["math"]["arrangeNum"]);
1855
		unset($conf["math"]["arrangeNum"]);
1855
		unset($conf["math"]["arrangeNum"]);
1856
 
1856
 
1857
		#如果由大排到小失敗
1857
		#如果由大排到小失敗
1858
		if($rawDataArray["status"]=="false"){
1858
		if($rawDataArray["status"]=="false"){
1859
			
1859
 
1860
			#設置執行失敗
1860
			#設置執行失敗
1861
			$result["status"]="false";
1861
			$result["status"]="false";
1862
			
1862
 
1863
			#設置執行錯誤訊息
1863
			#設置執行錯誤訊息
1864
			$result["error"]=$rawDataArray;
1864
			$result["error"]=$rawDataArray;
1865
 
1865
 
1866
			#回傳結果
1866
			#回傳結果
1867
			return $result;
1867
			return $result;
1868
			
1868
 
1869
			}#if end
1869
			}#if end
1870
 
1870
 
1871
		#初始化轉化好的一維陣列
1871
		#初始化轉化好的一維陣列
1872
		$oneDimetionArray=$rawDataArray["content"];
1872
		$oneDimetionArray=$rawDataArray["content"];
1873
 
1873
 
Line 1881... Line 1881...
1881
		$conf["math"]["getOutlier"]["rawDataArray"]=$oneDimetionArray;#要求算四分位的數據
1881
		$conf["math"]["getOutlier"]["rawDataArray"]=$oneDimetionArray;#要求算四分位的數據
1882
		#參考資料:
1882
		#參考資料:
1883
		#https://zh.wikipedia.org/zh-tw/%E5%9B%9B%E5%88%86%E4%BD%8D%E6%95%B0
1883
		#https://zh.wikipedia.org/zh-tw/%E5%9B%9B%E5%88%86%E4%BD%8D%E6%95%B0
1884
		$quartile=math::getQuartile($conf["math"]["getOutlier"]);
1884
		$quartile=math::getQuartile($conf["math"]["getOutlier"]);
1885
		unset($conf["math"]["getOutlier"]);
1885
		unset($conf["math"]["getOutlier"]);
1886
		
1886
 
1887
		#如果尋找Q1,Q2,Q3失敗
1887
		#如果尋找Q1,Q2,Q3失敗
1888
		if($quartile["status"]=="false"){
1888
		if($quartile["status"]=="false"){
1889
			
1889
 
1890
			#設置執行失敗
1890
			#設置執行失敗
1891
			$result["status"]="false";
1891
			$result["status"]="false";
1892
			
1892
 
1893
			#設置執行錯誤訊息
1893
			#設置執行錯誤訊息
1894
			$result["error"]=$quartile;
1894
			$result["error"]=$quartile;
1895
 
1895
 
1896
			#回傳結果
1896
			#回傳結果
1897
			return $result;
1897
			return $result;
1898
			
1898
 
1899
			}#if end
1899
			}#if end
1900
		
1900
 
1901
		#求算IQR(四分位距)
1901
		#求算IQR(四分位距)
1902
		$iqr=$quartile["Q3"]-$quartile["Q1"];
1902
		$iqr=$quartile["Q3"]-$quartile["Q1"];
1903
		
1903
 
1904
		#要檢測的元素有幾個就執行幾次
1904
		#要檢測的元素有幾個就執行幾次
1905
		for($i=0;$i<count($oneDimetionArray);$i++){
1905
		for($i=0;$i<count($oneDimetionArray);$i++){
1906
		
1906
 
1907
			#如果要檢測離羣值的陣列元素數值減掉Q2後大於1.5倍IQR
1907
			#如果要檢測離羣值的陣列元素數值減掉Q2後大於1.5倍IQR
1908
			if(abs($oneDimetionArray[$i]-$quartile["Q2"])>$iqr*1.5 ){
1908
			if(abs($oneDimetionArray[$i]-$quartile["Q2"])>$iqr*1.5 ){
1909
				
1909
 
1910
				#取得離羣值
1910
				#取得離羣值
1911
				$outlier[]=$oneDimetionArray[$i];
1911
				$outlier[]=$oneDimetionArray[$i];
1912
				
1912
 
1913
				}#if end
1913
				}#if end
1914
			
1914
 
1915
			}#for end
1915
			}#for end
1916
		
1916
 
1917
		#如果有離群值
1917
		#如果有離群值
1918
		if(isset($outlier)){
1918
		if(isset($outlier)){
1919
			
1919
 
1920
			#設置有找到離群值
1920
			#設置有找到離群值
1921
			$result["founded"]="true";
1921
			$result["founded"]="true";
1922
			
1922
 
1923
			#另存離群值
1923
			#另存離群值
1924
			$result["content"]=$outlier;
1924
			$result["content"]=$outlier;
1925
			
1925
 
1926
			}#if end
1926
			}#if end
1927
					
1927
 
1928
		#設置執行正常
1928
		#設置執行正常
1929
		$result["status"]="true";
1929
		$result["status"]="true";
1930
				
1930
 
1931
		#回傳離羣值
1931
		#回傳離羣值
1932
		return $result;
1932
		return $result;
1933
 
1933
 
1934
		}#function findOutlier end
1934
		}#function findOutlier end
1935
		
1935
 
1936
	/*
1936
	/*
1937
	#函式說明:
1937
	#函式說明:
1938
	#找最大值,結果會回傳最大值.
1938
	#找最大值,結果會回傳最大值.
1939
	#回傳結果:
1939
	#回傳結果:
1940
	#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
1940
	#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
Line 1954... Line 1954...
1954
	*/
1954
	*/
1955
	public static function getMaxValue(&$conf){
1955
	public static function getMaxValue(&$conf){
1956
 
1956
 
1957
		#初始化要回傳的內容
1957
		#初始化要回傳的內容
1958
		$result=array();
1958
		$result=array();
1959
		
1959
 
1960
		#記錄當前執行的函數名稱
1960
		#記錄當前執行的函數名稱
1961
		$result["function"]=__FUNCTION__;
1961
		$result["function"]=__FUNCTION__;
1962
 
1962
 
1963
		#如果 $conf 不為陣列
1963
		#如果 $conf 不為陣列
1964
		if(gettype($conf)!="array"){
1964
		if(gettype($conf)!="array"){
1965
			
1965
 
1966
			#設置執行失敗
1966
			#設置執行失敗
1967
			$result["status"]="false";
1967
			$result["status"]="false";
1968
			
1968
 
1969
			#設置執行錯誤訊息
1969
			#設置執行錯誤訊息
1970
			$result["error"][]="\$conf變數須為陣列形態";
1970
			$result["error"][]="\$conf變數須為陣列形態";
1971
 
1971
 
1972
			#如果傳入的參數為 null
1972
			#如果傳入的參數為 null
1973
			if($conf==null){
1973
			if($conf==null){
1974
				
1974
 
1975
				#設置執行錯誤訊息
1975
				#設置執行錯誤訊息
1976
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1976
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1977
				
1977
 
1978
				}#if end
1978
				}#if end
1979
 
1979
 
1980
			#回傳結果
1980
			#回傳結果
1981
			return $result;
1981
			return $result;
1982
			
1982
 
1983
			}#if end
1983
			}#if end
1984
 
1984
 
1985
		#檢查參數
1985
		#檢查參數
1986
		#函式說明:
1986
		#函式說明:
1987
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1987
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 1998... Line 1998...
1998
		#必填寫的參數:
1998
		#必填寫的參數:
1999
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1999
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2000
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2000
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2001
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2001
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2002
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
2002
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
2003
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
2003
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
2004
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
2004
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
2005
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2005
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2006
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2006
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2007
		#可以省略的參數:
2007
		#可以省略的參數:
2008
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2008
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2009
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2009
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2010
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2010
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2011
		#$conf["skipableVariableName"]=array();
2011
		#$conf["skipableVariableName"]=array();
2012
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
2012
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2013
		#$conf["skipableVariableType"]=array();
2013
		#$conf["skipableVariableType"]=array();
2014
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2014
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2015
		#$conf["skipableVarDefaultValue"]=array("");
2015
		#$conf["skipableVarDefaultValue"]=array("");
2016
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2016
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2017
		#$conf["arrayCountEqualCheck"][]=array();
2017
		#$conf["arrayCountEqualCheck"][]=array();
Line 2020... Line 2020...
2020
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2020
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2021
		unset($conf["variableCheck::checkArguments"]);
2021
		unset($conf["variableCheck::checkArguments"]);
2022
 
2022
 
2023
		#如果檢查參數失敗
2023
		#如果檢查參數失敗
2024
		if($checkArguments["status"]=="false"){
2024
		if($checkArguments["status"]=="false"){
2025
			
2025
 
2026
			#設置執行失敗
2026
			#設置執行失敗
2027
			$result["status"]="false";
2027
			$result["status"]="false";
2028
			
2028
 
2029
			#設置執行錯誤訊息
2029
			#設置執行錯誤訊息
2030
			$result["error"]=$checkArguments;
2030
			$result["error"]=$checkArguments;
2031
 
2031
 
2032
			#回傳結果
2032
			#回傳結果
2033
			return $result;
2033
			return $result;
2034
			
2034
 
2035
			}#if end
2035
			}#if end
2036
			
2036
 
2037
		#如果檢查不通過
2037
		#如果檢查不通過
2038
		if($checkArguments["passed"]=="false"){
2038
		if($checkArguments["passed"]=="false"){
2039
			
2039
 
2040
			#設置執行失敗
2040
			#設置執行失敗
2041
			$result["status"]="false";
2041
			$result["status"]="false";
2042
			
2042
 
2043
			#設置執行錯誤訊息
2043
			#設置執行錯誤訊息
2044
			$result["error"]=$checkArguments;
2044
			$result["error"]=$checkArguments;
2045
 
2045
 
2046
			#回傳結果
2046
			#回傳結果
2047
			return $result;
2047
			return $result;
2048
			
2048
 
2049
			}#if end
2049
			}#if end
2050
		
2050
 
2051
		#初始化要回傳的陣列
2051
		#初始化要回傳的陣列
2052
		$outputArray=array();
2052
		$outputArray=array();
2053
 
2053
 
2054
		#初始化技計數的變數
2054
		#初始化技計數的變數
2055
		$count=0;
2055
		$count=0;
2056
 
2056
 
2057
		#取得每個元素的key值
2057
		#取得每個元素的key值
2058
		foreach($conf["rawDataArray"] as $key=>$value){
2058
		foreach($conf["rawDataArray"] as $key=>$value){
2059
			
2059
 
2060
			#另存 key
2060
			#另存 key
2061
			$outputArray[$count]["key"]=$key;
2061
			$outputArray[$count]["key"]=$key;
2062
			
2062
 
2063
			#另存 value
2063
			#另存 value
2064
			$outputArray[$count]["value"]=$value;
2064
			$outputArray[$count]["value"]=$value;
2065
			
2065
 
2066
			#計數+1
2066
			#計數+1
2067
			$count++;
2067
			$count++;
2068
			
2068
 
2069
			}#foreach end
2069
			}#foreach end
2070
			
2070
 
2071
		#假定第一個數字爲最大值
2071
		#假定第一個數字爲最大值
2072
		$max=$outputArray[0];
2072
		$max=$outputArray[0];
2073
 
2073
 
2074
		#找出最大值
2074
		#找出最大值
2075
		for($i=1;$i<count($outputArray);$i++){
2075
		for($i=1;$i<count($outputArray);$i++){
2076
 
2076
 
2077
			#如果目前認爲的最大值小於後一個數字,
2077
			#如果目前認爲的最大值小於後一個數字,
2078
			if($max["value"]<$outputArray[$i]["value"]){
2078
			if($max["value"]<$outputArray[$i]["value"]){
2079
			
2079
 
2080
				#則將較大的數字放進 $max 裏面,
2080
				#則將較大的數字放進 $max 裏面,
2081
				$max=$outputArray[$i];
2081
				$max=$outputArray[$i];
2082
 
2082
 
2083
				}#判斷式結束
2083
				}#判斷式結束
2084
 
2084
 
2085
			}#迴圈結束	
2085
			}#迴圈結束
2086
 
2086
 
2087
		#取得最大值的原先key名稱
2087
		#取得最大值的原先key名稱
2088
		$result["key"]=$max["key"];	
2088
		$result["key"]=$max["key"];
2089
 
2089
 
2090
		#取得最大值
2090
		#取得最大值
2091
		$result["value"]=$max["value"];
2091
		$result["value"]=$max["value"];
2092
 
2092
 
2093
		#設置執行正常
2093
		#設置執行正常
Line 2118... Line 2118...
2118
	*/
2118
	*/
2119
	public static function getMinValue(&$conf){
2119
	public static function getMinValue(&$conf){
2120
 
2120
 
2121
		#初始化要回傳的內容
2121
		#初始化要回傳的內容
2122
		$result=array();
2122
		$result=array();
2123
		
2123
 
2124
		#記錄當前執行的函數名稱
2124
		#記錄當前執行的函數名稱
2125
		$result["function"]=__FUNCTION__;
2125
		$result["function"]=__FUNCTION__;
2126
 
2126
 
2127
		#如果 $conf 不為陣列
2127
		#如果 $conf 不為陣列
2128
		if(gettype($conf)!="array"){
2128
		if(gettype($conf)!="array"){
2129
			
2129
 
2130
			#設置執行失敗
2130
			#設置執行失敗
2131
			$result["status"]="false";
2131
			$result["status"]="false";
2132
			
2132
 
2133
			#設置執行錯誤訊息
2133
			#設置執行錯誤訊息
2134
			$result["error"][]="\$conf變數須為陣列形態";
2134
			$result["error"][]="\$conf變數須為陣列形態";
2135
 
2135
 
2136
			#如果傳入的參數為 null
2136
			#如果傳入的參數為 null
2137
			if($conf==null){
2137
			if($conf==null){
2138
				
2138
 
2139
				#設置執行錯誤訊息
2139
				#設置執行錯誤訊息
2140
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2140
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2141
				
2141
 
2142
				}#if end
2142
				}#if end
2143
 
2143
 
2144
			#回傳結果
2144
			#回傳結果
2145
			return $result;
2145
			return $result;
2146
			
2146
 
2147
			}#if end
2147
			}#if end
2148
 
2148
 
2149
		#檢查參數
2149
		#檢查參數
2150
		#函式說明:
2150
		#函式說明:
2151
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2151
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 2162... Line 2162...
2162
		#必填寫的參數:
2162
		#必填寫的參數:
2163
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2163
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2164
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2164
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2165
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2165
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2166
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
2166
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
2167
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
2167
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
2168
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
2168
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
2169
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2169
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2170
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2170
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2171
		#可以省略的參數:
2171
		#可以省略的參數:
2172
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2172
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2173
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2173
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2174
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2174
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2175
		#$conf["skipableVariableName"]=array();
2175
		#$conf["skipableVariableName"]=array();
2176
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
2176
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2177
		#$conf["skipableVariableType"]=array();
2177
		#$conf["skipableVariableType"]=array();
2178
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2178
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2179
		#$conf["skipableVarDefaultValue"]=array("");
2179
		#$conf["skipableVarDefaultValue"]=array("");
2180
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2180
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2181
		#$conf["arrayCountEqualCheck"][]=array();
2181
		#$conf["arrayCountEqualCheck"][]=array();
Line 2184... Line 2184...
2184
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2184
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2185
		unset($conf["variableCheck::checkArguments"]);
2185
		unset($conf["variableCheck::checkArguments"]);
2186
 
2186
 
2187
		#如果檢查參數失敗
2187
		#如果檢查參數失敗
2188
		if($checkArguments["status"]=="false"){
2188
		if($checkArguments["status"]=="false"){
2189
			
2189
 
2190
			#設置執行失敗
2190
			#設置執行失敗
2191
			$result["status"]="false";
2191
			$result["status"]="false";
2192
			
2192
 
2193
			#設置執行錯誤訊息
2193
			#設置執行錯誤訊息
2194
			$result["error"]=$checkArguments;
2194
			$result["error"]=$checkArguments;
2195
 
2195
 
2196
			#回傳結果
2196
			#回傳結果
2197
			return $result;
2197
			return $result;
2198
			
2198
 
2199
			}#if end
2199
			}#if end
2200
 
2200
 
2201
		#如果檢查不通過
2201
		#如果檢查不通過
2202
		if($checkArguments["passed"]=="false"){
2202
		if($checkArguments["passed"]=="false"){
2203
			
2203
 
2204
			#設置執行失敗
2204
			#設置執行失敗
2205
			$result["status"]="false";
2205
			$result["status"]="false";
2206
			
2206
 
2207
			#設置執行錯誤訊息
2207
			#設置執行錯誤訊息
2208
			$result["error"]=$checkArguments;
2208
			$result["error"]=$checkArguments;
2209
 
2209
 
2210
			#回傳結果
2210
			#回傳結果
2211
			return $result;
2211
			return $result;
2212
			
2212
 
2213
			}#if end
2213
			}#if end
2214
 
2214
 
2215
		#初始化技計數的變數
2215
		#初始化技計數的變數
2216
		$count=0;
2216
		$count=0;
2217
 
2217
 
2218
		#取得每個元素的key值
2218
		#取得每個元素的key值
2219
		foreach($conf["rawDataArray"] as $key=>$value){
2219
		foreach($conf["rawDataArray"] as $key=>$value){
2220
			
2220
 
2221
			#另存 key
2221
			#另存 key
2222
			$outputArray[$count]["key"]=$key;
2222
			$outputArray[$count]["key"]=$key;
2223
			
2223
 
2224
			#另存 value
2224
			#另存 value
2225
			$outputArray[$count]["value"]=$value;
2225
			$outputArray[$count]["value"]=$value;
2226
			
2226
 
2227
			#計數++
2227
			#計數++
2228
			$count++;
2228
			$count++;
2229
			
2229
 
2230
			}#foreach end
2230
			}#foreach end
2231
			
2231
 
2232
		#假定第一個數字爲最小值
2232
		#假定第一個數字爲最小值
2233
		$min=$outputArray[0];
2233
		$min=$outputArray[0];
2234
 
2234
 
2235
		#找出最小值
2235
		#找出最小值
2236
		for($i=1;$i<count($outputArray);$i++){
2236
		for($i=1;$i<count($outputArray);$i++){
2237
 
2237
 
2238
			#如果目前認爲的最小值大於後一個數字,
2238
			#如果目前認爲的最小值大於後一個數字,
2239
			if($min["value"]>$outputArray[$i]["value"]){
2239
			if($min["value"]>$outputArray[$i]["value"]){
2240
			
2240
 
2241
				#則將較小的數字放進 $min 裏面,
2241
				#則將較小的數字放進 $min 裏面,
2242
				$min=$outputArray[$i];
2242
				$min=$outputArray[$i];
2243
 
2243
 
2244
				}#判斷式結束
2244
				}#判斷式結束
2245
 
2245
 
2246
			}#迴圈結束		
2246
			}#迴圈結束
2247
 
2247
 
2248
		#取得最小值的原先key名稱
2248
		#取得最小值的原先key名稱
2249
		$result["key"]=$min["key"];	
2249
		$result["key"]=$min["key"];
2250
		
2250
 
2251
		#取得最小值
2251
		#取得最小值
2252
		$result["value"]=$min["value"];
2252
		$result["value"]=$min["value"];
2253
 
2253
 
2254
		#設置執行正常
2254
		#設置執行正常
2255
		$result["status"]="true";
2255
		$result["status"]="true";
Line 2280... Line 2280...
2280
	*/
2280
	*/
2281
	public static function getMaxAbsoluteValue(&$conf){
2281
	public static function getMaxAbsoluteValue(&$conf){
2282
 
2282
 
2283
		#初始化要回傳的內容
2283
		#初始化要回傳的內容
2284
		$result=array();
2284
		$result=array();
2285
		
2285
 
2286
		#記錄當前執行的函數名稱
2286
		#記錄當前執行的函數名稱
2287
		$result["function"]=__FUNCTION__;
2287
		$result["function"]=__FUNCTION__;
2288
 
2288
 
2289
		#如果 $conf 不為陣列
2289
		#如果 $conf 不為陣列
2290
		if(gettype($conf)!="array"){
2290
		if(gettype($conf)!="array"){
2291
			
2291
 
2292
			#設置執行失敗
2292
			#設置執行失敗
2293
			$result["status"]="false";
2293
			$result["status"]="false";
2294
			
2294
 
2295
			#設置執行錯誤訊息
2295
			#設置執行錯誤訊息
2296
			$result["error"][]="\$conf變數須為陣列形態";
2296
			$result["error"][]="\$conf變數須為陣列形態";
2297
 
2297
 
2298
			#如果傳入的參數為 null
2298
			#如果傳入的參數為 null
2299
			if($conf==null){
2299
			if($conf==null){
2300
				
2300
 
2301
				#設置執行錯誤訊息
2301
				#設置執行錯誤訊息
2302
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2302
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2303
				
2303
 
2304
				}#if end
2304
				}#if end
2305
 
2305
 
2306
			#回傳結果
2306
			#回傳結果
2307
			return $result;
2307
			return $result;
2308
			
2308
 
2309
			}#if end
2309
			}#if end
2310
 
2310
 
2311
		#檢查參數
2311
		#檢查參數
2312
		#函式說明:
2312
		#函式說明:
2313
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2313
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 2324... Line 2324...
2324
		#必填寫的參數:
2324
		#必填寫的參數:
2325
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2325
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2326
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2326
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2327
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2327
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2328
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
2328
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
2329
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
2329
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
2330
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
2330
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
2331
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2331
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2332
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2332
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2333
		#可以省略的參數:
2333
		#可以省略的參數:
2334
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2334
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2335
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2335
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2336
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2336
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2337
		#$conf["skipableVariableName"]=array();
2337
		#$conf["skipableVariableName"]=array();
2338
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
2338
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2339
		#$conf["skipableVariableType"]=array();
2339
		#$conf["skipableVariableType"]=array();
2340
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2340
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2341
		#$conf["skipableVarDefaultValue"]=array("");
2341
		#$conf["skipableVarDefaultValue"]=array("");
2342
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2342
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2343
		#$conf["arrayCountEqualCheck"][]=array();
2343
		#$conf["arrayCountEqualCheck"][]=array();
Line 2346... Line 2346...
2346
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2346
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2347
		unset($conf["variableCheck::checkArguments"]);
2347
		unset($conf["variableCheck::checkArguments"]);
2348
 
2348
 
2349
		#如果檢查參數失敗
2349
		#如果檢查參數失敗
2350
		if($checkArguments["status"]=="false"){
2350
		if($checkArguments["status"]=="false"){
2351
			
2351
 
2352
			#設置執行失敗
2352
			#設置執行失敗
2353
			$result["status"]="false";
2353
			$result["status"]="false";
2354
			
2354
 
2355
			#設置執行錯誤訊息
2355
			#設置執行錯誤訊息
2356
			$result["error"]=$checkArguments;
2356
			$result["error"]=$checkArguments;
2357
 
2357
 
2358
			#回傳結果
2358
			#回傳結果
2359
			return $result;
2359
			return $result;
2360
			
2360
 
2361
			}#if end
2361
			}#if end
2362
			
2362
 
2363
		#如果檢查不通過
2363
		#如果檢查不通過
2364
		if($checkArguments["passed"]=="false"){
2364
		if($checkArguments["passed"]=="false"){
2365
			
2365
 
2366
			#設置執行失敗
2366
			#設置執行失敗
2367
			$result["status"]="false";
2367
			$result["status"]="false";
2368
			
2368
 
2369
			#設置執行錯誤訊息
2369
			#設置執行錯誤訊息
2370
			$result["error"]=$checkArguments;
2370
			$result["error"]=$checkArguments;
2371
 
2371
 
2372
			#回傳結果
2372
			#回傳結果
2373
			return $result;
2373
			return $result;
2374
			
2374
 
2375
			}#if end
2375
			}#if end
2376
 
2376
 
2377
		#初始化儲存要比較的數字陣列
2377
		#初始化儲存要比較的數字陣列
2378
		$outputArray=array();
2378
		$outputArray=array();
2379
 
2379
 
2380
		#初始化技計數的變數
2380
		#初始化技計數的變數
2381
		$count=0;
2381
		$count=0;
2382
 
2382
 
2383
		#取得每個元素的key值
2383
		#取得每個元素的key值
2384
		foreach($conf["rawDataArray"] as $key=>$value){
2384
		foreach($conf["rawDataArray"] as $key=>$value){
2385
			
2385
 
2386
			#另存 key
2386
			#另存 key
2387
			$outputArray[$count]["key"]=$key;
2387
			$outputArray[$count]["key"]=$key;
2388
			
2388
 
2389
			#另存 value
2389
			#另存 value
2390
			$outputArray[$count]["value"]=$value;
2390
			$outputArray[$count]["value"]=$value;
2391
			
2391
 
2392
			#另存 絕對值過後的數值
2392
			#另存 絕對值過後的數值
2393
			$outputArray[$count]["absValue"]=abs($value);
2393
			$outputArray[$count]["absValue"]=abs($value);
2394
			
2394
 
2395
			#計數+1
2395
			#計數+1
2396
			$count++;
2396
			$count++;
2397
			
2397
 
2398
			}#foreach end
2398
			}#foreach end
2399
			
2399
 
2400
		#假定第一個數字爲最大值
2400
		#假定第一個數字爲最大值
2401
		$max["value"]=$outputArray[0]["value"];
2401
		$max["value"]=$outputArray[0]["value"];
2402
		$max["key"]=$outputArray[0]["key"];
2402
		$max["key"]=$outputArray[0]["key"];
2403
		$max["absValue"]=$outputArray[0]["absValue"];
2403
		$max["absValue"]=$outputArray[0]["absValue"];
2404
 
2404
 
2405
		#找出最大值
2405
		#找出最大值
2406
		for($i=1;$i<count($conf["rawDataArray"]);$i++){
2406
		for($i=1;$i<count($conf["rawDataArray"]);$i++){
2407
 
2407
 
2408
			#如果目前認爲的最大值小於後一個數字,
2408
			#如果目前認爲的最大值小於後一個數字,
2409
			if($max["absValue"]<$outputArray[$i]["absValue"]){
2409
			if($max["absValue"]<$outputArray[$i]["absValue"]){
2410
			
2410
 
2411
				#則將較大的數字放進 $max 裏面,
2411
				#則將較大的數字放進 $max 裏面,
2412
				$max["value"]=$outputArray[$i]["value"];
2412
				$max["value"]=$outputArray[$i]["value"];
2413
				$max["key"]=$outputArray[$i]["key"];
2413
				$max["key"]=$outputArray[$i]["key"];
2414
				$max["absValue"]=$outputArray[$i]["absValue"];
2414
				$max["absValue"]=$outputArray[$i]["absValue"];
2415
 
2415
 
2416
				}#判斷式結束
2416
				}#判斷式結束
2417
 
2417
 
2418
			}#迴圈結束	
2418
			}#迴圈結束
2419
			
2419
 
2420
		#儲存絕對值後最大值的資訊
2420
		#儲存絕對值後最大值的資訊
2421
		$result["key"]=$max["key"];
2421
		$result["key"]=$max["key"];
2422
		$result["value"]=$max["value"];
2422
		$result["value"]=$max["value"];
2423
		$result["absValue"]=$max["absValue"];
2423
		$result["absValue"]=$max["absValue"];
2424
 
2424
 
2425
		#設置執行正常 
2425
		#設置執行正常
2426
		$result["status"]="true";
2426
		$result["status"]="true";
2427
 
2427
 
2428
		#回傳最大值
2428
		#回傳最大值
2429
		return $result;
2429
		return $result;
2430
 
2430
 
Line 2451... Line 2451...
2451
	*/
2451
	*/
2452
	public static function getMinAbsoluteValue(&$conf){
2452
	public static function getMinAbsoluteValue(&$conf){
2453
 
2453
 
2454
		#初始化要回傳的內容
2454
		#初始化要回傳的內容
2455
		$result=array();
2455
		$result=array();
2456
		
2456
 
2457
		#記錄當前執行的函數名稱
2457
		#記錄當前執行的函數名稱
2458
		$result["function"]=__FUNCTION__;
2458
		$result["function"]=__FUNCTION__;
2459
 
2459
 
2460
		#如果 $conf 不為陣列
2460
		#如果 $conf 不為陣列
2461
		if(gettype($conf)!="array"){
2461
		if(gettype($conf)!="array"){
2462
			
2462
 
2463
			#設置執行失敗
2463
			#設置執行失敗
2464
			$result["status"]="false";
2464
			$result["status"]="false";
2465
			
2465
 
2466
			#設置執行錯誤訊息
2466
			#設置執行錯誤訊息
2467
			$result["error"][]="\$conf變數須為陣列形態";
2467
			$result["error"][]="\$conf變數須為陣列形態";
2468
 
2468
 
2469
			#如果傳入的參數為 null
2469
			#如果傳入的參數為 null
2470
			if($conf==null){
2470
			if($conf==null){
2471
				
2471
 
2472
				#設置執行錯誤訊息
2472
				#設置執行錯誤訊息
2473
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2473
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2474
				
2474
 
2475
				}#if end
2475
				}#if end
2476
 
2476
 
2477
			#回傳結果
2477
			#回傳結果
2478
			return $result;
2478
			return $result;
2479
			
2479
 
2480
			}#if end
2480
			}#if end
2481
 
2481
 
2482
		#檢查參數
2482
		#檢查參數
2483
		#函式說明:
2483
		#函式說明:
2484
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2484
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 2495... Line 2495...
2495
		#必填寫的參數:
2495
		#必填寫的參數:
2496
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2496
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2497
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2497
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2498
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2498
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2499
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
2499
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
2500
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
2500
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
2501
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
2501
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
2502
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2502
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2503
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2503
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2504
		#可以省略的參數:
2504
		#可以省略的參數:
2505
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2505
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2506
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2506
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2507
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2507
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2508
		#$conf["skipableVariableName"]=array();
2508
		#$conf["skipableVariableName"]=array();
2509
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
2509
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2510
		#$conf["skipableVariableType"]=array();
2510
		#$conf["skipableVariableType"]=array();
2511
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2511
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2512
		#$conf["skipableVarDefaultValue"]=array("");
2512
		#$conf["skipableVarDefaultValue"]=array("");
2513
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2513
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2514
		#$conf["arrayCountEqualCheck"][]=array();
2514
		#$conf["arrayCountEqualCheck"][]=array();
Line 2517... Line 2517...
2517
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2517
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2518
		unset($conf["variableCheck::checkArguments"]);
2518
		unset($conf["variableCheck::checkArguments"]);
2519
 
2519
 
2520
		#如果檢查參數失敗
2520
		#如果檢查參數失敗
2521
		if($checkArguments["status"]=="false"){
2521
		if($checkArguments["status"]=="false"){
2522
			
2522
 
2523
			#設置執行失敗
2523
			#設置執行失敗
2524
			$result["status"]="false";
2524
			$result["status"]="false";
2525
			
2525
 
2526
			#設置執行錯誤訊息
2526
			#設置執行錯誤訊息
2527
			$result["error"]=$checkArguments;
2527
			$result["error"]=$checkArguments;
2528
 
2528
 
2529
			#回傳結果
2529
			#回傳結果
2530
			return $result;
2530
			return $result;
2531
			
2531
 
2532
			}#if end
2532
			}#if end
2533
			
2533
 
2534
		#如果檢查不通過
2534
		#如果檢查不通過
2535
		if($checkArguments["passed"]=="false"){
2535
		if($checkArguments["passed"]=="false"){
2536
			
2536
 
2537
			#設置執行失敗
2537
			#設置執行失敗
2538
			$result["status"]="false";
2538
			$result["status"]="false";
2539
			
2539
 
2540
			#設置執行錯誤訊息
2540
			#設置執行錯誤訊息
2541
			$result["error"]=$checkArguments;
2541
			$result["error"]=$checkArguments;
2542
 
2542
 
2543
			#回傳結果
2543
			#回傳結果
2544
			return $result;
2544
			return $result;
2545
			
2545
 
2546
			}#if end
2546
			}#if end
2547
 
2547
 
2548
		#初始化儲存要比較的數字陣列
2548
		#初始化儲存要比較的數字陣列
2549
		$outputArray=array();
2549
		$outputArray=array();
2550
 
2550
 
2551
		#初始化技計數的變數
2551
		#初始化技計數的變數
2552
		$count=0;
2552
		$count=0;
2553
 
2553
 
2554
		#取得每個元素的key值
2554
		#取得每個元素的key值
2555
		foreach($conf["rawDataArray"] as $key=>$value){
2555
		foreach($conf["rawDataArray"] as $key=>$value){
2556
			
2556
 
2557
			#另存 key
2557
			#另存 key
2558
			$outputArray[$count]["key"]=$key;
2558
			$outputArray[$count]["key"]=$key;
2559
			
2559
 
2560
			#另存 value
2560
			#另存 value
2561
			$outputArray[$count]["value"]=$value;
2561
			$outputArray[$count]["value"]=$value;
2562
			
2562
 
2563
			#另存 絕對值過後的數值
2563
			#另存 絕對值過後的數值
2564
			$outputArray[$count]["absValue"]=abs($value);
2564
			$outputArray[$count]["absValue"]=abs($value);
2565
			
2565
 
2566
			#計數+1
2566
			#計數+1
2567
			$count++;
2567
			$count++;
2568
			
2568
 
2569
			}#foreach end
2569
			}#foreach end
2570
			
2570
 
2571
		#假定第一個數字爲最大值
2571
		#假定第一個數字爲最大值
2572
		$min["value"]=$outputArray[0]["value"];
2572
		$min["value"]=$outputArray[0]["value"];
2573
		$min["key"]=$outputArray[0]["key"];
2573
		$min["key"]=$outputArray[0]["key"];
2574
		$min["absValue"]=$outputArray[0]["absValue"];
2574
		$min["absValue"]=$outputArray[0]["absValue"];
2575
 
2575
 
2576
		#找出最大值
2576
		#找出最大值
2577
		for($i=1;$i<count($conf["rawDataArray"]);$i++){
2577
		for($i=1;$i<count($conf["rawDataArray"]);$i++){
2578
 
2578
 
2579
			#如果目前認爲的最小值大於後一個數字,
2579
			#如果目前認爲的最小值大於後一個數字,
2580
			if($min["absValue"]>$outputArray[$i]["absValue"]){
2580
			if($min["absValue"]>$outputArray[$i]["absValue"]){
2581
			
2581
 
2582
				#則將較大的數字放進 $max 裏面,
2582
				#則將較大的數字放進 $max 裏面,
2583
				$min["value"]=$outputArray[$i]["value"];
2583
				$min["value"]=$outputArray[$i]["value"];
2584
				$min["key"]=$outputArray[$i]["key"];
2584
				$min["key"]=$outputArray[$i]["key"];
2585
				$min["absValue"]=$outputArray[$i]["absValue"];
2585
				$min["absValue"]=$outputArray[$i]["absValue"];
2586
 
2586
 
2587
				}#判斷式結束
2587
				}#判斷式結束
2588
 
2588
 
2589
			}#迴圈結束	
2589
			}#迴圈結束
2590
			
2590
 
2591
		#儲存絕對值後最大值的資訊
2591
		#儲存絕對值後最大值的資訊
2592
		$result["key"]=$min["key"];
2592
		$result["key"]=$min["key"];
2593
		$result["value"]=$min["value"];
2593
		$result["value"]=$min["value"];
2594
		$result["absValue"]=$min["absValue"];
2594
		$result["absValue"]=$min["absValue"];
2595
 
2595
 
2596
		#設置執行正常 
2596
		#設置執行正常
2597
		$result["status"]="true";
2597
		$result["status"]="true";
2598
 
2598
 
2599
		#回傳最大值
2599
		#回傳最大值
2600
		return $result;
2600
		return $result;
2601
 
2601
 
Line 2618... Line 2618...
2618
	#無.
2618
	#無.
2619
	#備註:
2619
	#備註:
2620
	#無.
2620
	#無.
2621
	*/
2621
	*/
2622
	public static function minMaxNormalization($conf){
2622
	public static function minMaxNormalization($conf){
2623
	
2623
 
2624
		#初始化要回傳的內容
2624
		#初始化要回傳的內容
2625
		$result=array();
2625
		$result=array();
2626
		
2626
 
2627
		#記錄當前執行的函數名稱
2627
		#記錄當前執行的函數名稱
2628
		$result["function"]=__FUNCTION__;
2628
		$result["function"]=__FUNCTION__;
2629
 
2629
 
2630
		#如果 $conf 不為陣列
2630
		#如果 $conf 不為陣列
2631
		if(gettype($conf)!="array"){
2631
		if(gettype($conf)!="array"){
2632
			
2632
 
2633
			#設置執行失敗
2633
			#設置執行失敗
2634
			$result["status"]="false";
2634
			$result["status"]="false";
2635
			
2635
 
2636
			#設置執行錯誤訊息
2636
			#設置執行錯誤訊息
2637
			$result["error"][]="\$conf變數須為陣列形態";
2637
			$result["error"][]="\$conf變數須為陣列形態";
2638
 
2638
 
2639
			#如果傳入的參數為 null
2639
			#如果傳入的參數為 null
2640
			if($conf==null){
2640
			if($conf==null){
2641
				
2641
 
2642
				#設置執行錯誤訊息
2642
				#設置執行錯誤訊息
2643
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2643
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2644
				
2644
 
2645
				}#if end
2645
				}#if end
2646
 
2646
 
2647
			#回傳結果
2647
			#回傳結果
2648
			return $result;
2648
			return $result;
2649
			
2649
 
2650
			}#if end
2650
			}#if end
2651
 
2651
 
2652
		#檢查參數
2652
		#檢查參數
2653
		#函式說明:
2653
		#函式說明:
2654
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2654
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 2665... Line 2665...
2665
		#必填寫的參數:
2665
		#必填寫的參數:
2666
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2666
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2667
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2667
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2668
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2668
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2669
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
2669
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
2670
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
2670
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
2671
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
2671
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
2672
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2672
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2673
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2673
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2674
		#可以省略的參數:
2674
		#可以省略的參數:
2675
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2675
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2676
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2676
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2677
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2677
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2678
		#$conf["skipableVariableName"]=array();
2678
		#$conf["skipableVariableName"]=array();
2679
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
2679
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2680
		#$conf["skipableVariableType"]=array();
2680
		#$conf["skipableVariableType"]=array();
2681
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2681
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2682
		#$conf["skipableVarDefaultValue"]=array("");
2682
		#$conf["skipableVarDefaultValue"]=array("");
2683
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2683
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2684
		#$conf["arrayCountEqualCheck"][]=array();
2684
		#$conf["arrayCountEqualCheck"][]=array();
Line 2687... Line 2687...
2687
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2687
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2688
		unset($conf["variableCheck::checkArguments"]);
2688
		unset($conf["variableCheck::checkArguments"]);
2689
 
2689
 
2690
		#如果檢查參數失敗
2690
		#如果檢查參數失敗
2691
		if($checkArguments["status"]=="false"){
2691
		if($checkArguments["status"]=="false"){
2692
			
2692
 
2693
			#設置執行失敗
2693
			#設置執行失敗
2694
			$result["status"]="false";
2694
			$result["status"]="false";
2695
			
2695
 
2696
			#設置執行錯誤訊息
2696
			#設置執行錯誤訊息
2697
			$result["error"]=$checkArguments;
2697
			$result["error"]=$checkArguments;
2698
 
2698
 
2699
			#回傳結果
2699
			#回傳結果
2700
			return $result;
2700
			return $result;
2701
			
2701
 
2702
			}#if end
2702
			}#if end
2703
 
2703
 
2704
		#如果檢查不通過
2704
		#如果檢查不通過
2705
		if($checkArguments["passed"]=="false"){
2705
		if($checkArguments["passed"]=="false"){
2706
			
2706
 
2707
			#設置執行失敗
2707
			#設置執行失敗
2708
			$result["status"]="false";
2708
			$result["status"]="false";
2709
			
2709
 
2710
			#設置執行錯誤訊息
2710
			#設置執行錯誤訊息
2711
			$result["error"]=$checkArguments;
2711
			$result["error"]=$checkArguments;
2712
 
2712
 
2713
			#回傳結果
2713
			#回傳結果
2714
			return $result;
2714
			return $result;
2715
			
2715
 
2716
			}#if end
2716
			}#if end
2717
		
2717
 
2718
		#取得最大值
2718
		#取得最大值
2719
		#回傳結果:
2719
		#回傳結果:
2720
		#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
2720
		#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
2721
		#$result["error"],錯誤訊息陣列.
2721
		#$result["error"],錯誤訊息陣列.
2722
		#$result["function"],當前執行的函數名稱.
2722
		#$result["function"],當前執行的函數名稱.
2723
		#$result["key"],最大值原先的key.
2723
		#$result["key"],最大值原先的key.
2724
		#$result["value"],最大值的數字.
2724
		#$result["value"],最大值的數字.
2725
		$conf["math"]["getMaxValue"]["rawDataArray"]=$conf["rawDataArray"];
2725
		$conf["math"]["getMaxValue"]["rawDataArray"]=$conf["rawDataArray"];
2726
		$tempMax=math::getMaxValue($conf["math"]["getMaxValue"]);
2726
		$tempMax=math::getMaxValue($conf["math"]["getMaxValue"]);
2727
		unset($conf["math"]["getMaxValue"]);			
2727
		unset($conf["math"]["getMaxValue"]);
2728
 
2728
 
2729
		#如果取得最大值失敗
2729
		#如果取得最大值失敗
2730
		if($tempMax["status"]=="false"){
2730
		if($tempMax["status"]=="false"){
2731
			
2731
 
2732
			#設置執行失敗
2732
			#設置執行失敗
2733
			$result["status"]="false";
2733
			$result["status"]="false";
2734
			
2734
 
2735
			#設置執行錯誤訊息
2735
			#設置執行錯誤訊息
2736
			$result["error"]=$tempMax;
2736
			$result["error"]=$tempMax;
2737
 
2737
 
2738
			#回傳結果
2738
			#回傳結果
2739
			return $result;
2739
			return $result;
2740
			
2740
 
2741
			}#if end
2741
			}#if end
2742
 
2742
 
2743
		#取得最大值
2743
		#取得最大值
2744
		$max=$tempMax["value"];
2744
		$max=$tempMax["value"];
2745
 
2745
 
Line 2749... Line 2749...
2749
		#$result["function"],當前執行的函數名稱.
2749
		#$result["function"],當前執行的函數名稱.
2750
		#$result["key"],最大值原先的key.
2750
		#$result["key"],最大值原先的key.
2751
		#$result["value"],陣列裏面最小的數值.
2751
		#$result["value"],陣列裏面最小的數值.
2752
		$conf["math"]["getMinValue"]["rawDataArray"]=$conf["rawDataArray"];
2752
		$conf["math"]["getMinValue"]["rawDataArray"]=$conf["rawDataArray"];
2753
		$min=math::getMinValue($conf["math"]["getMinValue"]);
2753
		$min=math::getMinValue($conf["math"]["getMinValue"]);
2754
		unset($conf["math"]["getMinValue"]);	
2754
		unset($conf["math"]["getMinValue"]);
2755
	
2755
 
2756
		#如果取得最小值失敗
2756
		#如果取得最小值失敗
2757
		if($min["status"]=="false"){
2757
		if($min["status"]=="false"){
2758
			
2758
 
2759
			#設置執行失敗
2759
			#設置執行失敗
2760
			$result["status"]="false";
2760
			$result["status"]="false";
2761
			
2761
 
2762
			#設置執行錯誤訊息
2762
			#設置執行錯誤訊息
2763
			$result["error"]=$min;
2763
			$result["error"]=$min;
2764
 
2764
 
2765
			#回傳結果
2765
			#回傳結果
2766
			return $result;
2766
			return $result;
2767
			
2767
 
2768
			}#if end
2768
			}#if end
2769
			
2769
 
2770
		#取得最小值 
2770
		#取得最小值
2771
		$min=$min["value"];
2771
		$min=$min["value"];
2772
	
2772
 
2773
		#將每組數據正規化
2773
		#將每組數據正規化
2774
		for($i=0;$i<count($conf["rawDataArray"]);$i++){
2774
		for($i=0;$i<count($conf["rawDataArray"]);$i++){
2775
 
2775
 
2776
			#每筆數據減掉最小值然後再除以最大值減最小值
2776
			#每筆數據減掉最小值然後再除以最大值減最小值
2777
			$newDataArray[$i]=($conf["rawDataArray"][$i]-$min)/($max-$min);			
2777
			$newDataArray[$i]=($conf["rawDataArray"][$i]-$min)/($max-$min);
2778
 
2778
 
2779
			}#迴圈結束
2779
			}#迴圈結束
2780
 
2780
 
2781
		#儲存原始數據
2781
		#儲存原始數據
2782
		$result["original"]=$conf["rawDataArray"];
2782
		$result["original"]=$conf["rawDataArray"];
Line 2784... Line 2784...
2784
		#儲存正規化後的數據
2784
		#儲存正規化後的數據
2785
		$result["normalizationed"]=$newDataArray;
2785
		$result["normalizationed"]=$newDataArray;
2786
 
2786
 
2787
		#設置執行正常
2787
		#設置執行正常
2788
		$result["status"]="true";
2788
		$result["status"]="true";
2789
		
2789
 
2790
		#回傳正規化完後的數據
2790
		#回傳正規化完後的數據
2791
		return $result;
2791
		return $result;
2792
 
2792
 
2793
		}#函式結束
2793
		}#函式結束
2794
 
2794
 
Line 2811... Line 2811...
2811
	*/
2811
	*/
2812
	public static function findJvalue(&$conf){
2812
	public static function findJvalue(&$conf){
2813
 
2813
 
2814
		#初始化要回傳的內容
2814
		#初始化要回傳的內容
2815
		$result=array();
2815
		$result=array();
2816
		
2816
 
2817
		#記錄當前執行的函數名稱
2817
		#記錄當前執行的函數名稱
2818
		$result["function"]=__FUNCTION__;
2818
		$result["function"]=__FUNCTION__;
2819
 
2819
 
2820
		#初始化 Jvalue
2820
		#初始化 Jvalue
2821
		$result["content"]="";
2821
		$result["content"]="";
2822
 
2822
 
2823
		#如果 $conf 不為陣列
2823
		#如果 $conf 不為陣列
2824
		if(gettype($conf)!="array"){
2824
		if(gettype($conf)!="array"){
2825
			
2825
 
2826
			#設置執行失敗
2826
			#設置執行失敗
2827
			$result["status"]="false";
2827
			$result["status"]="false";
2828
			
2828
 
2829
			#設置執行錯誤訊息
2829
			#設置執行錯誤訊息
2830
			$result["error"][]="\$conf變數須為陣列形態";
2830
			$result["error"][]="\$conf變數須為陣列形態";
2831
 
2831
 
2832
			#如果傳入的參數為 null
2832
			#如果傳入的參數為 null
2833
			if($conf==null){
2833
			if($conf==null){
2834
				
2834
 
2835
				#設置執行錯誤訊息
2835
				#設置執行錯誤訊息
2836
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2836
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2837
				
2837
 
2838
				}#if end
2838
				}#if end
2839
 
2839
 
2840
			#回傳結果
2840
			#回傳結果
2841
			return $result;
2841
			return $result;
2842
			
2842
 
2843
			}#if end
2843
			}#if end
2844
 
2844
 
2845
		#檢查參數
2845
		#檢查參數
2846
		#函式說明:
2846
		#函式說明:
2847
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2847
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 2858... Line 2858...
2858
		#必填寫的參數:
2858
		#必填寫的參數:
2859
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2859
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2860
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2860
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2861
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2861
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2862
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("num");
2862
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("num");
2863
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
2863
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
2864
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
2864
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
2865
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2865
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2866
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2866
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2867
		#可以省略的參數:
2867
		#可以省略的參數:
2868
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2868
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
2869
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2869
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
2870
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2870
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2871
		#$conf["skipableVariableName"]=array();
2871
		#$conf["skipableVariableName"]=array();
2872
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
2872
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2873
		#$conf["skipableVariableType"]=array();
2873
		#$conf["skipableVariableType"]=array();
2874
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2874
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2875
		#$conf["skipableVarDefaultValue"]=array("");
2875
		#$conf["skipableVarDefaultValue"]=array("");
2876
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2876
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2877
		#$conf["arrayCountEqualCheck"][]=array();
2877
		#$conf["arrayCountEqualCheck"][]=array();
Line 2880... Line 2880...
2880
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2880
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2881
		unset($conf["variableCheck::checkArguments"]);
2881
		unset($conf["variableCheck::checkArguments"]);
2882
 
2882
 
2883
		#如果檢查參數失敗
2883
		#如果檢查參數失敗
2884
		if($checkArguments["status"]=="false"){
2884
		if($checkArguments["status"]=="false"){
2885
			
2885
 
2886
			#設置執行失敗
2886
			#設置執行失敗
2887
			$result["status"]="false";
2887
			$result["status"]="false";
2888
			
2888
 
2889
			#設置執行錯誤訊息
2889
			#設置執行錯誤訊息
2890
			$result["error"]=$checkArguments;
2890
			$result["error"]=$checkArguments;
2891
 
2891
 
2892
			#回傳結果
2892
			#回傳結果
2893
			return $result;
2893
			return $result;
2894
			
2894
 
2895
			}#if end
2895
			}#if end
2896
			
2896
 
2897
		#如果檢查不通過
2897
		#如果檢查不通過
2898
		if($checkArguments["passed"]=="false"){
2898
		if($checkArguments["passed"]=="false"){
2899
			
2899
 
2900
			#設置執行失敗
2900
			#設置執行失敗
2901
			$result["status"]="false";
2901
			$result["status"]="false";
2902
			
2902
 
2903
			#設置執行錯誤訊息
2903
			#設置執行錯誤訊息
2904
			$result["error"]=$checkArguments;
2904
			$result["error"]=$checkArguments;
2905
 
2905
 
2906
			#回傳結果
2906
			#回傳結果
2907
			return $result;
2907
			return $result;
2908
			
2908
 
2909
			}#if end
2909
			}#if end
2910
 
2910
 
2911
		#重複執行
2911
		#重複執行
2912
		for($i=1;$i>0;$i++){
2912
		for($i=1;$i>0;$i++){
2913
 
2913
 
2914
			#當該值除以10的$i次方後小於1則停止
2914
			#當該值除以10的$i次方後小於1則停止
2915
			if(($conf["num"]/pow(10,$i))<1){
2915
			if(($conf["num"]/pow(10,$i))<1){
2916
	
2916
 
2917
				#給與 $jValue 數值
2917
				#給與 $jValue 數值
2918
				$result["content"]=$i;
2918
				$result["content"]=$i;
2919
	
2919
 
2920
				#中斷,跳出迴圈
2920
				#中斷,跳出迴圈
2921
				break;	
2921
				break;
2922
 
2922
 
2923
				}#判斷式結束
2923
				}#判斷式結束
2924
				
2924
 
2925
			}#迴圈結束
2925
			}#迴圈結束
2926
 
2926
 
2927
		#設置執行正常
2927
		#設置執行正常
2928
		$result["status"]="true";
2928
		$result["status"]="true";
2929
 
2929
 
2930
		#回傳結果
2930
		#回傳結果
2931
		return $result;
2931
		return $result;
2932
		
2932
 
2933
		}#funciton findJvalue end
2933
		}#funciton findJvalue end
2934
 
2934
 
2935
	/*
2935
	/*
2936
	#函式說明:
2936
	#函式說明:
2937
	#透過 Decimal scaling 來縮放原始數據
2937
	#透過 Decimal scaling 來縮放原始數據
Line 2951... Line 2951...
2951
	*/
2951
	*/
2952
	public static function computeDecimalScaling($conf){
2952
	public static function computeDecimalScaling($conf){
2953
 
2953
 
2954
		#初始化要回傳的內容
2954
		#初始化要回傳的內容
2955
		$result=array();
2955
		$result=array();
2956
		
2956
 
2957
		#記錄當前執行的函數名稱
2957
		#記錄當前執行的函數名稱
2958
		$result["function"]=__FUNCTION__;
2958
		$result["function"]=__FUNCTION__;
2959
 
2959
 
2960
		#如果 $conf 不為陣列
2960
		#如果 $conf 不為陣列
2961
		if(gettype($conf)!="array"){
2961
		if(gettype($conf)!="array"){
2962
			
2962
 
2963
			#設置執行失敗
2963
			#設置執行失敗
2964
			$result["status"]="false";
2964
			$result["status"]="false";
2965
			
2965
 
2966
			#設置執行錯誤訊息
2966
			#設置執行錯誤訊息
2967
			$result["error"][]="\$conf變數須為陣列形態";
2967
			$result["error"][]="\$conf變數須為陣列形態";
2968
 
2968
 
2969
			#如果傳入的參數為 null
2969
			#如果傳入的參數為 null
2970
			if($conf==null){
2970
			if($conf==null){
2971
				
2971
 
2972
				#設置執行錯誤訊息
2972
				#設置執行錯誤訊息
2973
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2973
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2974
				
2974
 
2975
				}#if end
2975
				}#if end
2976
 
2976
 
2977
			#回傳結果
2977
			#回傳結果
2978
			return $result;
2978
			return $result;
2979
			
2979
 
2980
			}#if end
2980
			}#if end
2981
 
2981
 
2982
		#檢查參數
2982
		#檢查參數
2983
		#函式說明:
2983
		#函式說明:
2984
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2984
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 2995... Line 2995...
2995
		#必填寫的參數:
2995
		#必填寫的參數:
2996
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2996
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2997
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2997
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2998
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2998
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2999
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
2999
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
3000
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
3000
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
3001
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
3001
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
3002
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3002
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3003
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3003
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3004
		#可以省略的參數:
3004
		#可以省略的參數:
3005
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
3005
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
3006
		#$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
3006
		#$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
3007
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3007
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3008
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
3008
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
3009
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
3009
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3010
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
3010
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
3011
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3011
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3012
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
3012
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
3013
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3013
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3014
		#$conf["arrayCountEqualCheck"][]=array();
3014
		#$conf["arrayCountEqualCheck"][]=array();
Line 3017... Line 3017...
3017
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3017
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3018
		unset($conf["variableCheck::checkArguments"]);
3018
		unset($conf["variableCheck::checkArguments"]);
3019
 
3019
 
3020
		#如果檢查參數失敗
3020
		#如果檢查參數失敗
3021
		if($checkArguments["status"]=="false"){
3021
		if($checkArguments["status"]=="false"){
3022
			
3022
 
3023
			#設置執行失敗
3023
			#設置執行失敗
3024
			$result["status"]="false";
3024
			$result["status"]="false";
3025
			
3025
 
3026
			#設置執行錯誤訊息
3026
			#設置執行錯誤訊息
3027
			$result["error"]=$checkArguments;
3027
			$result["error"]=$checkArguments;
3028
 
3028
 
3029
			#回傳結果
3029
			#回傳結果
3030
			return $result;
3030
			return $result;
3031
			
3031
 
3032
			}#if end
3032
			}#if end
3033
			
3033
 
3034
		#如果檢查不通過
3034
		#如果檢查不通過
3035
		if($checkArguments["passed"]=="false"){
3035
		if($checkArguments["passed"]=="false"){
3036
			
3036
 
3037
			#設置執行失敗
3037
			#設置執行失敗
3038
			$result["status"]="false";
3038
			$result["status"]="false";
3039
			
3039
 
3040
			#設置執行錯誤訊息
3040
			#設置執行錯誤訊息
3041
			$result["error"]=$checkArguments;
3041
			$result["error"]=$checkArguments;
3042
 
3042
 
3043
			#回傳結果
3043
			#回傳結果
3044
			return $result;
3044
			return $result;
3045
			
3045
 
3046
			}#if end
3046
			}#if end
3047
 
3047
 
3048
		#計算資料總筆數
3048
		#計算資料總筆數
3049
		$dataCounts=count($conf["rawDataArray"]);
3049
		$dataCounts=count($conf["rawDataArray"]);
3050
 
3050
 
Line 3060... Line 3060...
3060
		$maxAbs=math::getMaxAbsoluteValue($conf["math"]["getMaxAbsoluteValue"]);
3060
		$maxAbs=math::getMaxAbsoluteValue($conf["math"]["getMaxAbsoluteValue"]);
3061
		unset($conf["math"]["getMaxAbsoluteValue"]);
3061
		unset($conf["math"]["getMaxAbsoluteValue"]);
3062
 
3062
 
3063
		#如果 取得該筆資料的絕對值後的最大值 失敗
3063
		#如果 取得該筆資料的絕對值後的最大值 失敗
3064
		if($maxAbs["status"]=="false"){
3064
		if($maxAbs["status"]=="false"){
3065
			
3065
 
3066
			#設置執行失敗
3066
			#設置執行失敗
3067
			$result["status"]="false";
3067
			$result["status"]="false";
3068
			
3068
 
3069
			#設置執行錯誤訊息
3069
			#設置執行錯誤訊息
3070
			$result["error"]=$maxAbs;
3070
			$result["error"]=$maxAbs;
3071
 
3071
 
3072
			#回傳結果
3072
			#回傳結果
3073
			return $result;
3073
			return $result;
3074
			
3074
 
3075
			}#if end
3075
			}#if end
3076
			
3076
 
3077
		#取得該筆資料的絕對值後的最大值
3077
		#取得該筆資料的絕對值後的最大值
3078
		$maxAbs=$maxAbs["absValue"];
3078
		$maxAbs=$maxAbs["absValue"];
3079
 
3079
 
3080
		#求算最大值需要10的幾次方去除才會最接近1,但小於1。
3080
		#求算最大值需要10的幾次方去除才會最接近1,但小於1。
3081
		#回傳結果:
3081
		#回傳結果:
Line 3087... Line 3087...
3087
		$findJvalue=math::findJvalue($conf["math"]["findJvalue"]);
3087
		$findJvalue=math::findJvalue($conf["math"]["findJvalue"]);
3088
		unset($conf["math"]["findJvalue"]);
3088
		unset($conf["math"]["findJvalue"]);
3089
 
3089
 
3090
		#如果取得jValue失敗
3090
		#如果取得jValue失敗
3091
		if($findJvalue["status"]=="false"){
3091
		if($findJvalue["status"]=="false"){
3092
			
3092
 
3093
			#設置執行失敗
3093
			#設置執行失敗
3094
			$result["status"]="false";
3094
			$result["status"]="false";
3095
			
3095
 
3096
			#設置執行錯誤訊息
3096
			#設置執行錯誤訊息
3097
			$result["error"]=$findJvalue;
3097
			$result["error"]=$findJvalue;
3098
 
3098
 
3099
			#回傳結果
3099
			#回傳結果
3100
			return $result;
3100
			return $result;
3101
			
3101
 
3102
			}#if end
3102
			}#if end
3103
			
3103
 
3104
		#取得jValue
3104
		#取得jValue
3105
		$jValue=$findJvalue["content"];
3105
		$jValue=$findJvalue["content"];
3106
 
3106
 
3107
		#將原始數據進行 Decimal scaling
3107
		#將原始數據進行 Decimal scaling
3108
		for($i=0;$i<count($conf["rawDataArray"]);$i++){
3108
		for($i=0;$i<count($conf["rawDataArray"]);$i++){
3109
 
3109
 
3110
			#每筆數除以10的j次方
3110
			#每筆數除以10的j次方
3111
			$newDataArray[$i]=$conf["rawDataArray"][$i]/pow(10,$jValue);			
3111
			$newDataArray[$i]=$conf["rawDataArray"][$i]/pow(10,$jValue);
3112
 
3112
 
3113
			}#迴圈結束			
3113
			}#迴圈結束
3114
 
3114
 
3115
		#將 scaling 化的數據存入 $result["oldValue"] 陣列變數裏面
3115
		#將 scaling 化的數據存入 $result["oldValue"] 陣列變數裏面
3116
		$result["oldValue"]=$conf["rawDataArray"];
3116
		$result["oldValue"]=$conf["rawDataArray"];
3117
 
3117
 
3118
		#將原始數據存入 $result["oldValue"] 陣列變數裏面
3118
		#將原始數據存入 $result["oldValue"] 陣列變數裏面
Line 3120... Line 3120...
3120
 
3120
 
3121
		#設置執行正常
3121
		#設置執行正常
3122
		$result["status"]="true";
3122
		$result["status"]="true";
3123
 
3123
 
3124
		#回傳結果
3124
		#回傳結果
3125
		return $result;		
3125
		return $result;
3126
		
3126
 
3127
		}#function computeDecimalScaling end
3127
		}#function computeDecimalScaling end
3128
 
3128
 
3129
	/*
3129
	/*
3130
	#函式說明:
3130
	#函式說明:
3131
	#將用於統計分析的原始陣列裏面,每筆資料的特定欄位爲0的時候,將該筆樣本踢除
3131
	#將用於統計分析的原始陣列裏面,每筆資料的特定欄位爲0的時候,將該筆樣本踢除
Line 3151... Line 3151...
3151
	*/
3151
	*/
3152
	public static function eraseContainZeroData(&$conf){
3152
	public static function eraseContainZeroData(&$conf){
3153
 
3153
 
3154
		#初始化要回傳的內容
3154
		#初始化要回傳的內容
3155
		$result=array();
3155
		$result=array();
3156
		
3156
 
3157
		#記錄當前執行的函數名稱
3157
		#記錄當前執行的函數名稱
3158
		$result["function"]=__FUNCTION__;
3158
		$result["function"]=__FUNCTION__;
3159
 
3159
 
3160
		#如果 $conf 不為陣列
3160
		#如果 $conf 不為陣列
3161
		if(gettype($conf)!="array"){
3161
		if(gettype($conf)!="array"){
3162
			
3162
 
3163
			#設置執行失敗
3163
			#設置執行失敗
3164
			$result["status"]="false";
3164
			$result["status"]="false";
3165
			
3165
 
3166
			#設置執行錯誤訊息
3166
			#設置執行錯誤訊息
3167
			$result["error"][]="\$conf變數須為陣列形態";
3167
			$result["error"][]="\$conf變數須為陣列形態";
3168
 
3168
 
3169
			#如果傳入的參數為 null
3169
			#如果傳入的參數為 null
3170
			if($conf==null){
3170
			if($conf==null){
3171
				
3171
 
3172
				#設置執行錯誤訊息
3172
				#設置執行錯誤訊息
3173
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3173
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3174
				
3174
 
3175
				}#if end
3175
				}#if end
3176
 
3176
 
3177
			#回傳結果
3177
			#回傳結果
3178
			return $result;
3178
			return $result;
3179
			
3179
 
3180
			}#if end
3180
			}#if end
3181
 
3181
 
3182
		#檢查參數
3182
		#檢查參數
3183
		#函式說明:
3183
		#函式說明:
3184
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3184
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 3195... Line 3195...
3195
		#必填寫的參數:
3195
		#必填寫的參數:
3196
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3196
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3197
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3197
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3198
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3198
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3199
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("varArray","checkedColumn");
3199
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("varArray","checkedColumn");
3200
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
3200
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
3201
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
3201
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
3202
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3202
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3203
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3203
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3204
		#可以省略的參數:
3204
		#可以省略的參數:
3205
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
3205
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
3206
		$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
3206
		$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
3207
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3207
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3208
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("repeatExecTimeLimitTo");
3208
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("repeatExecTimeLimitTo");
3209
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
3209
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3210
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("integer");
3210
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("integer");
3211
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3211
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3212
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(ini_get("max_execution_time"));
3212
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(ini_get("max_execution_time"));
3213
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3213
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3214
		#$conf["arrayCountEqualCheck"][]=array();
3214
		#$conf["arrayCountEqualCheck"][]=array();
Line 3217... Line 3217...
3217
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3217
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3218
		unset($conf["variableCheck::checkArguments"]);
3218
		unset($conf["variableCheck::checkArguments"]);
3219
 
3219
 
3220
		#如果檢查參數失敗
3220
		#如果檢查參數失敗
3221
		if($checkArguments["status"]=="false"){
3221
		if($checkArguments["status"]=="false"){
3222
			
3222
 
3223
			#設置執行失敗
3223
			#設置執行失敗
3224
			$result["status"]="false";
3224
			$result["status"]="false";
3225
			
3225
 
3226
			#設置執行錯誤訊息
3226
			#設置執行錯誤訊息
3227
			$result["error"]=$checkArguments;
3227
			$result["error"]=$checkArguments;
3228
 
3228
 
3229
			#回傳結果
3229
			#回傳結果
3230
			return $result;
3230
			return $result;
3231
			
3231
 
3232
			}#if end
3232
			}#if end
3233
			
3233
 
3234
		#如果檢查不通過
3234
		#如果檢查不通過
3235
		if($checkArguments["passed"]=="false"){
3235
		if($checkArguments["passed"]=="false"){
3236
			
3236
 
3237
			#設置執行失敗
3237
			#設置執行失敗
3238
			$result["status"]="false";
3238
			$result["status"]="false";
3239
			
3239
 
3240
			#設置執行錯誤訊息
3240
			#設置執行錯誤訊息
3241
			$result["error"]=$checkArguments;
3241
			$result["error"]=$checkArguments;
3242
 
3242
 
3243
			#回傳結果
3243
			#回傳結果
3244
			return $result;
3244
			return $result;
3245
			
3245
 
3246
			}#if end
3246
			}#if end
3247
					
3247
 
3248
		#有幾筆資料就執行幾次
3248
		#有幾筆資料就執行幾次
3249
		for($i=0;$i<count($conf["varArray"]);$i++){
3249
		for($i=0;$i<count($conf["varArray"]);$i++){
3250
							
3250
 
3251
			#初始化要不要捨棄該筆資料的變數
3251
			#初始化要不要捨棄該筆資料的變數
3252
			$drop="false";
3252
			$drop="false";
3253
			
3253
 
3254
			#針對第$i+1列
3254
			#針對第$i+1列
3255
			foreach($conf["varArray"][$i] as $questName=>$questVal){
3255
			foreach($conf["varArray"][$i] as $questName=>$questVal){
3256
					
3256
 
3257
				#函式說明:
3257
				#函式說明:
3258
				#檢查某個元素是否存在於該一維陣列變數裏面
3258
				#檢查某個元素是否存在於該一維陣列變數裏面
3259
				#回傳結果:
3259
				#回傳結果:
3260
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3260
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3261
				#$reuslt["error"],執行不正常結束的錯訊息陣列.
3261
				#$reuslt["error"],執行不正常結束的錯訊息陣列.
3262
				#$result["function"],當前執行的函式名稱.
3262
				#$result["function"],當前執行的函式名稱.
3263
				#$result["founded"],"true",表示該元素已經存在於該一維陣列變數裏面,"false"表示該元素不存在於該一維陣列變數裏面.
3263
				#$result["founded"],"true",表示該元素已經存在於該一維陣列變數裏面,"false"表示該元素不存在於該一維陣列變數裏面.
3264
				#必填寫的參數:
3264
				#必填寫的參數:
3265
				$conf["variableCheck"]["checkElementExistFromAnArray"]["searchString"]=$questName;#要搜尋的元素內容
3265
				$conf["variableCheck"]["checkElementExistFromAnArray"]["searchString"]=$questName;#要搜尋的元素內容
3266
				$conf["variableCheck"]["checkElementExistFromAnArray"]["searchArray"]=$conf["checkedColumn"];#要搜尋的陣列變數		
3266
				$conf["variableCheck"]["checkElementExistFromAnArray"]["searchArray"]=$conf["checkedColumn"];#要搜尋的陣列變數
3267
				$checkResult=variableCheck::checkElementExistFromAnArray($conf["variableCheck"]["checkElementExistFromAnArray"]);
3267
				$checkResult=variableCheck::checkElementExistFromAnArray($conf["variableCheck"]["checkElementExistFromAnArray"]);
3268
				unset($conf["variableCheck"]["checkElementExistFromAnArray"]);
3268
				unset($conf["variableCheck"]["checkElementExistFromAnArray"]);
3269
 
3269
 
3270
				#如果檢查失敗
3270
				#如果檢查失敗
3271
				if($checkResult["status"]=="false"){
3271
				if($checkResult["status"]=="false"){
3272
					
3272
 
3273
					#設置執行失敗
3273
					#設置執行失敗
3274
					$result["status"]="false";
3274
					$result["status"]="false";
3275
					
3275
 
3276
					#設置執行錯誤訊息
3276
					#設置執行錯誤訊息
3277
					$result["error"]=$checkResult;
3277
					$result["error"]=$checkResult;
3278
 
3278
 
3279
					#回傳結果
3279
					#回傳結果
3280
					return $result;
3280
					return $result;
3281
					
3281
 
3282
					}#if end
3282
					}#if end
3283
 
3283
 
3284
				#如果是要檢查的欄位
3284
				#如果是要檢查的欄位
3285
				if($checkResult["founded"]==="true"){
3285
				if($checkResult["founded"]==="true"){
3286
 
3286
 
3287
					#如果值等於 0
3287
					#如果值等於 0
3288
					if($questVal===0 || $questVal==="0"){
3288
					if($questVal===0 || $questVal==="0"){
3289
						
3289
 
3290
						#標記該筆樣本要捨棄
3290
						#標記該筆樣本要捨棄
3291
						$drop="true";
3291
						$drop="true";
3292
						
3292
 
3293
						#跳出foreach
3293
						#跳出foreach
3294
						break;
3294
						break;
3295
							
3295
 
3296
						}#if end							
3296
						}#if end
3297
						
3297
 
3298
					}#if end
3298
					}#if end
3299
 
3299
 
3300
				}#foreache end
3300
				}#foreache end
3301
			
3301
 
3302
			#如果沒有要捨棄該樣本標記
3302
			#如果沒有要捨棄該樣本標記
3303
			if($drop!="true"){
3303
			if($drop!="true"){
3304
 
3304
 
3305
				#取得該筆資料
3305
				#取得該筆資料
3306
				$result["content"][]=$conf["varArray"][$i];
3306
				$result["content"][]=$conf["varArray"][$i];
3307
 
3307
 
3308
				}#if end
3308
				}#if end
3309
			
3309
 
3310
			#函數說明:
3310
			#函數說明:
3311
			#延長php的執行時間,每呼叫一次會初始化執行時間爲0,然後設定下次可以執行多久.
3311
			#延長php的執行時間,每呼叫一次會初始化執行時間爲0,然後設定下次可以執行多久.
3312
			#回傳結果:
3312
			#回傳結果:
3313
			#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
3313
			#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
3314
			#$result["error"],錯誤訊息陣列.
3314
			#$result["error"],錯誤訊息陣列.
Line 3318... Line 3318...
3318
			$conf["config::delayRunTimeExectionMax"]["sec"]=$conf["repeatExecTimeLimitTo"];
3318
			$conf["config::delayRunTimeExectionMax"]["sec"]=$conf["repeatExecTimeLimitTo"];
3319
			#參考資料:
3319
			#參考資料:
3320
			#http://php.net/manual/en/function.set-time-limit.php
3320
			#http://php.net/manual/en/function.set-time-limit.php
3321
			$delayRunTimeExectionMax=config::delayRunTimeExectionMax($conf["config::delayRunTimeExectionMax"]);
3321
			$delayRunTimeExectionMax=config::delayRunTimeExectionMax($conf["config::delayRunTimeExectionMax"]);
3322
			unset($conf["config::delayRunTimeExectionMax"]);
3322
			unset($conf["config::delayRunTimeExectionMax"]);
3323
			
3323
 
3324
			#如果執行失敗
3324
			#如果執行失敗
3325
			if($delayRunTimeExectionMax["status"]==="false"){
3325
			if($delayRunTimeExectionMax["status"]==="false"){
3326
			
3326
 
3327
				#設定類別圖繪製失敗
3327
				#設定類別圖繪製失敗
3328
				$result["status"]="false";			
3328
				$result["status"]="false";
3329
							
3329
 
3330
				#設定該檔案的類別圖繪製失敗提示
3330
				#設定該檔案的類別圖繪製失敗提示
3331
				$result["error"]=$delayRunTimeExectionMax;
3331
				$result["error"]=$delayRunTimeExectionMax;
3332
				
3332
 
3333
				#回傳結果
3333
				#回傳結果
3334
				return $result;
3334
				return $result;
3335
			
3335
 
3336
				}#if end		
3336
				}#if end
3337
 
3337
 
3338
			}#for end
3338
			}#for end
3339
 
3339
 
3340
		#設置執行正常
3340
		#設置執行正常
3341
		$result["status"]="true";
3341
		$result["status"]="true";
3342
 
3342
 
3343
		#回傳結果
3343
		#回傳結果
3344
		return $result;
3344
		return $result;
3345
 
3345
 
3346
		}#funciton eraseContainZeroData end
3346
		}#funciton eraseContainZeroData end
3347
		
3347
 
3348
	/*
3348
	/*
3349
	#函式說明:
3349
	#函式說明:
3350
	#將陣列裡面小於等於自己的正整數或大於等於自己的負整數
3350
	#將陣列裡面小於等於自己的正整數或大於等於自己的負整數
3351
	#回傳結果:
3351
	#回傳結果:
3352
	#$result["status"],執行是否成功的識別,"true"代表執行正常,"false"代表執行不正常.
3352
	#$result["status"],執行是否成功的識別,"true"代表執行正常,"false"代表執行不正常.
Line 3360... Line 3360...
3360
	#無
3360
	#無
3361
	#參考資料:
3361
	#參考資料:
3362
	#http://tw2.php.net/manual/en/function.round.php
3362
	#http://tw2.php.net/manual/en/function.round.php
3363
	#備註:
3363
	#備註:
3364
	#無.
3364
	#無.
3365
	*/ 
3365
	*/
3366
	public static function changeToIntValue(&$conf){
3366
	public static function changeToIntValue(&$conf){
3367
		
3367
 
3368
		#初始化要回傳的內容
3368
		#初始化要回傳的內容
3369
		$result=array();
3369
		$result=array();
3370
		
3370
 
3371
		#記錄當前執行的函數名稱
3371
		#記錄當前執行的函數名稱
3372
		$result["function"]=__FUNCTION__;
3372
		$result["function"]=__FUNCTION__;
3373
 
3373
 
3374
		#如果 $conf 不為陣列
3374
		#如果 $conf 不為陣列
3375
		if(gettype($conf)!="array"){
3375
		if(gettype($conf)!="array"){
3376
			
3376
 
3377
			#設置執行失敗
3377
			#設置執行失敗
3378
			$result["status"]="false";
3378
			$result["status"]="false";
3379
			
3379
 
3380
			#設置執行錯誤訊息
3380
			#設置執行錯誤訊息
3381
			$result["error"][]="\$conf變數須為陣列形態";
3381
			$result["error"][]="\$conf變數須為陣列形態";
3382
 
3382
 
3383
			#如果傳入的參數為 null
3383
			#如果傳入的參數為 null
3384
			if($conf==null){
3384
			if($conf==null){
3385
				
3385
 
3386
				#設置執行錯誤訊息
3386
				#設置執行錯誤訊息
3387
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3387
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3388
				
3388
 
3389
				}#if end
3389
				}#if end
3390
 
3390
 
3391
			#回傳結果
3391
			#回傳結果
3392
			return $result;
3392
			return $result;
3393
			
3393
 
3394
			}#if end
3394
			}#if end
3395
 
3395
 
3396
		#檢查參數
3396
		#檢查參數
3397
		#函式說明:
3397
		#函式說明:
3398
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3398
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 3409... Line 3409...
3409
		#必填寫的參數:
3409
		#必填寫的參數:
3410
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3410
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3411
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3411
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3412
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3412
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3413
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
3413
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
3414
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
3414
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
3415
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
3415
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
3416
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3416
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3417
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3417
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3418
		#可以省略的參數:
3418
		#可以省略的參數:
3419
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
3419
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
3420
		$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
3420
		$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
3421
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3421
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3422
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
3422
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
3423
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
3423
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3424
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
3424
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
3425
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3425
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3426
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
3426
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
3427
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3427
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3428
		#$conf["arrayCountEqualCheck"][]=array();
3428
		#$conf["arrayCountEqualCheck"][]=array();
Line 3431... Line 3431...
3431
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3431
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3432
		unset($conf["variableCheck::checkArguments"]);
3432
		unset($conf["variableCheck::checkArguments"]);
3433
 
3433
 
3434
		#如果檢查參數失敗
3434
		#如果檢查參數失敗
3435
		if($checkArguments["status"]=="false"){
3435
		if($checkArguments["status"]=="false"){
3436
			
3436
 
3437
			#設置執行失敗
3437
			#設置執行失敗
3438
			$result["status"]="false";
3438
			$result["status"]="false";
3439
			
3439
 
3440
			#設置執行錯誤訊息
3440
			#設置執行錯誤訊息
3441
			$result["error"]=$checkArguments;
3441
			$result["error"]=$checkArguments;
3442
 
3442
 
3443
			#回傳結果
3443
			#回傳結果
3444
			return $result;
3444
			return $result;
3445
			
3445
 
3446
			}#if end
3446
			}#if end
3447
			
3447
 
3448
		#如果檢查不通過
3448
		#如果檢查不通過
3449
		if($checkArguments["passed"]=="false"){
3449
		if($checkArguments["passed"]=="false"){
3450
			
3450
 
3451
			#設置執行失敗
3451
			#設置執行失敗
3452
			$result["status"]="false";
3452
			$result["status"]="false";
3453
			
3453
 
3454
			#設置執行錯誤訊息
3454
			#設置執行錯誤訊息
3455
			$result["error"]=$checkArguments;
3455
			$result["error"]=$checkArguments;
3456
 
3456
 
3457
			#回傳結果
3457
			#回傳結果
3458
			return $result;
3458
			return $result;
3459
			
3459
 
3460
			}#if end
3460
			}#if end
3461
				
3461
 
3462
		#針對每個數字陣列元素
3462
		#針對每個數字陣列元素
3463
		foreach($conf["inputArray"] as $numKey=>$numValue){
3463
		foreach($conf["inputArray"] as $numKey=>$numValue){
3464
			
3464
 
3465
			#取成小於等於$numValue的正整數,與大於等於$numValue的負整數
3465
			#取成小於等於$numValue的正整數,與大於等於$numValue的負整數
3466
			$numValue=round($numValue,0,PHP_ROUND_HALF_EVEN);
3466
			$numValue=round($numValue,0,PHP_ROUND_HALF_EVEN);
3467
			
3467
 
3468
			#轉換為 int 型別,並存在原始以key為名的陣列中
3468
			#轉換為 int 型別,並存在原始以key為名的陣列中
3469
			$result["content"][$numKey]=$numValue;
3469
			$result["content"][$numKey]=$numValue;
3470
			
3470
 
3471
			}#foreach end
3471
			}#foreach end
3472
			
3472
 
3473
		#設置執行成功的識別
3473
		#設置執行成功的識別
3474
		$result["status"]="true";
3474
		$result["status"]="true";
3475
		
3475
 
3476
		#回傳結果
3476
		#回傳結果
3477
		return $result;
3477
		return $result;
3478
		
3478
 
3479
		}#function changeToIntValue end	
3479
		}#function changeToIntValue end
3480
		
3480
 
3481
	/*
3481
	/*
3482
	#函式說明: 
3482
	#函式說明:
3483
	#亂數產生特定陣列裡面的內容
3483
	#亂數產生特定陣列裡面的內容
3484
	#回傳結果:
3484
	#回傳結果:
3485
	#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
3485
	#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
3486
	#$result["function"],當前執行的函數名稱.
3486
	#$result["function"],當前執行的函數名稱.
3487
	#$result["error"],錯誤訊息陣列.
3487
	#$result["error"],錯誤訊息陣列.
Line 3496... Line 3496...
3496
	#無.
3496
	#無.
3497
	#備註:
3497
	#備註:
3498
	#無.
3498
	#無.
3499
	*/
3499
	*/
3500
	public static function randomFromArray($conf){
3500
	public static function randomFromArray($conf){
3501
		
3501
 
3502
		#初始化要回傳的內容
3502
		#初始化要回傳的內容
3503
		$result=array();
3503
		$result=array();
3504
		
3504
 
3505
		#記錄當前執行的函數名稱
3505
		#記錄當前執行的函數名稱
3506
		$result["function"]=__FUNCTION__;
3506
		$result["function"]=__FUNCTION__;
3507
 
3507
 
3508
		#如果 $conf 不為陣列
3508
		#如果 $conf 不為陣列
3509
		if(gettype($conf)!="array"){
3509
		if(gettype($conf)!="array"){
3510
			
3510
 
3511
			#設置執行失敗
3511
			#設置執行失敗
3512
			$result["status"]="false";
3512
			$result["status"]="false";
3513
			
3513
 
3514
			#設置執行錯誤訊息
3514
			#設置執行錯誤訊息
3515
			$result["error"][]="\$conf變數須為陣列形態";
3515
			$result["error"][]="\$conf變數須為陣列形態";
3516
 
3516
 
3517
			#如果傳入的參數為 null
3517
			#如果傳入的參數為 null
3518
			if($conf==null){
3518
			if($conf==null){
3519
				
3519
 
3520
				#設置執行錯誤訊息
3520
				#設置執行錯誤訊息
3521
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3521
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3522
				
3522
 
3523
				}#if end
3523
				}#if end
3524
 
3524
 
3525
			#回傳結果
3525
			#回傳結果
3526
			return $result;
3526
			return $result;
3527
			
3527
 
3528
			}#if end
3528
			}#if end
3529
 
3529
 
3530
		#檢查參數
3530
		#檢查參數
3531
		#函式說明:
3531
		#函式說明:
3532
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3532
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
Line 3543... Line 3543...
3543
		#必填寫的參數:
3543
		#必填寫的參數:
3544
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3544
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3545
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3545
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3546
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3546
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3547
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("randomArray");
3547
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("randomArray");
3548
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
3548
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
3549
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
3549
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
3550
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3550
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3551
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3551
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3552
		#可以省略的參數:
3552
		#可以省略的參數:
3553
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
3553
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
3554
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
3554
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
3555
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3555
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3556
		#$conf["skipableVariableName"]=array();
3556
		#$conf["skipableVariableName"]=array();
3557
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
3557
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3558
		#$conf["skipableVariableType"]=array();
3558
		#$conf["skipableVariableType"]=array();
3559
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3559
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3560
		#$conf["skipableVarDefaultValue"]=array("");
3560
		#$conf["skipableVarDefaultValue"]=array("");
3561
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3561
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3562
		#$conf["arrayCountEqualCheck"][]=array();
3562
		#$conf["arrayCountEqualCheck"][]=array();
Line 3565... Line 3565...
3565
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3565
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3566
		unset($conf["variableCheck::checkArguments"]);
3566
		unset($conf["variableCheck::checkArguments"]);
3567
 
3567
 
3568
		#如果檢查參數失敗
3568
		#如果檢查參數失敗
3569
		if($checkArguments["status"]=="false"){
3569
		if($checkArguments["status"]=="false"){
3570
			
3570
 
3571
			#設置執行失敗
3571
			#設置執行失敗
3572
			$result["status"]="false";
3572
			$result["status"]="false";
3573
			
3573
 
3574
			#設置執行錯誤訊息
3574
			#設置執行錯誤訊息
3575
			$result["error"]=$checkArguments;
3575
			$result["error"]=$checkArguments;
3576
 
3576
 
3577
			#回傳結果
3577
			#回傳結果
3578
			return $result;
3578
			return $result;
3579
			
3579
 
3580
			}#if end
3580
			}#if end
3581
 
3581
 
3582
		#如果檢查不通過
3582
		#如果檢查不通過
3583
		if($checkArguments["passed"]=="false"){
3583
		if($checkArguments["passed"]=="false"){
3584
			
3584
 
3585
			#設置執行失敗
3585
			#設置執行失敗
3586
			$result["status"]="false";
3586
			$result["status"]="false";
3587
			
3587
 
3588
			#設置執行錯誤訊息
3588
			#設置執行錯誤訊息
3589
			$result["error"]=$checkArguments;
3589
			$result["error"]=$checkArguments;
3590
 
3590
 
3591
			#回傳結果
3591
			#回傳結果
3592
			return $result;
3592
			return $result;
3593
			
3593
 
3594
			}#if end
3594
			}#if end
3595
			
3595
 
3596
		#取得用於隨機產生的元素數目
3596
		#取得用於隨機產生的元素數目
3597
		$randomCount=\count($conf["randomArray"]);
3597
		$randomCount=\count($conf["randomArray"]);
3598
		
3598
 
3599
		#產生的亂數
3599
		#產生的亂數
3600
		$number=\rand(0,$randomCount-1);
3600
		$number=\rand(0,$randomCount-1);
3601
		
3601
 
3602
		#取得產生出來的亂數
3602
		#取得產生出來的亂數
3603
		$result["content"]["key"]=$number;
3603
		$result["content"]["key"]=$number;
3604
 
3604
 
3605
		#取得亂數對應的內容
3605
		#取得亂數對應的內容
3606
		$result["content"]["value"]=$conf["randomArray"][$number];
3606
		$result["content"]["value"]=$conf["randomArray"][$number];
3607
				
3607
 
3608
		#設置執行成功
3608
		#設置執行成功
3609
		$result["status"]="true";
3609
		$result["status"]="true";
3610
		
3610
 
3611
		#回傳結果
3611
		#回傳結果
3612
		return $result;
3612
		return $result;
3613
		
3613
 
3614
		}#function randomFromArray end
3614
		}#function randomFromArray end
3615
 
3615
 
3616
	/*
3616
	/*
3617
	#函式說明: 
3617
	#函式說明:
3618
	#亂數產生特定陣列裡面的內容,可以多次產生並回傳結果.
3618
	#亂數產生特定陣列裡面的內容,可以多次產生並回傳結果.
3619
	#回傳結果:
3619
	#回傳結果:
3620
	#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
3620
	#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
3621
	#$result["function"],當前執行的函數名稱.
3621
	#$result["function"],當前執行的函數名稱.
3622
	#$result["error"],錯誤訊息陣列.
3622
	#$result["error"],錯誤訊息陣列.
Line 3634... Line 3634...
3634
	#無.
3634
	#無.
3635
	#備註:
3635
	#備註:
3636
	#無.
3636
	#無.
3637
	*/
3637
	*/
3638
	public static function randomFromArrayManyTimes(&$conf){
3638
	public static function randomFromArrayManyTimes(&$conf){
3639
	
3639
 
3640
		#初始化要回傳的內容
3640
		#初始化要回傳的內容
3641
		$result=array();
3641
		$result=array();
3642
		
3642
 
3643
		#記錄當前執行的函數名稱
3643
		#記錄當前執行的函數名稱
3644
		$result["function"]=__FUNCTION__;
3644
		$result["function"]=__FUNCTION__;
3645
 
3645
 
3646
		#如果 $conf 不為陣列
3646
		#如果 $conf 不為陣列
3647
		if(gettype($conf)!="array"){
3647
		if(gettype($conf)!="array"){
3648
			
3648
 
3649
			#設置執行失敗
3649
			#設置執行失敗
3650
			$result["status"]="false";
3650
			$result["status"]="false";
3651
			
3651
 
3652
			#設置執行錯誤訊息
3652
			#設置執行錯誤訊息
3653
			$result["error"][]="\$conf變數須為陣列形態";
3653
			$result["error"][]="\$conf變數須為陣列形態";
3654
 
3654
 
3655
			#如果傳入的參數為 null
3655
			#如果傳入的參數為 null
3656
			if($conf==null){
3656
			if($conf==null){
3657
				
3657
 
3658
				#設置執行錯誤訊息
3658
				#設置執行錯誤訊息
3659
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3659
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3660
				
3660
 
3661
				}#if end
3661
				}#if end
3662
 
3662
 
3663
			#回傳結果
3663
			#回傳結果
3664
			return $result;
3664
			return $result;
3665
			
3665
 
3666
			}#if end
3666
			}#if end
3667
			
3667
 
3668
		#取得使用的參數
3668
		#取得使用的參數
3669
		$result["argu"]=$conf;
3669
		$result["argu"]=$conf;
3670
		
3670
 
3671
		#初始化記錄字串串接後的結果
3671
		#初始化記錄字串串接後的結果
3672
		$result["content"]["str"]="";
3672
		$result["content"]["str"]="";
3673
	
3673
 
3674
		#函式說明:
3674
		#函式說明:
3675
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
3675
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
3676
		#回傳結果:
3676
		#回傳結果:
3677
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3677
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3678
		#$result["error"],執行不正常結束的錯訊息陣列.
3678
		#$result["error"],執行不正常結束的錯訊息陣列.
Line 3723... Line 3723...
3723
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3723
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3724
		#備註:
3724
		#備註:
3725
		#無.
3725
		#無.
3726
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3726
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3727
		unset($conf["variableCheck::checkArguments"]);
3727
		unset($conf["variableCheck::checkArguments"]);
3728
	
3728
 
3729
		#如果檢查參數失敗
3729
		#如果檢查參數失敗
3730
		if($checkArguments["status"]=="false"){
3730
		if($checkArguments["status"]=="false"){
3731
			
3731
 
3732
			#設置執行失敗
3732
			#設置執行失敗
3733
			$result["status"]="false";
3733
			$result["status"]="false";
3734
			
3734
 
3735
			#設置執行錯誤訊息
3735
			#設置執行錯誤訊息
3736
			$result["error"]=$checkArguments;
3736
			$result["error"]=$checkArguments;
3737
 
3737
 
3738
			#回傳結果
3738
			#回傳結果
3739
			return $result;
3739
			return $result;
3740
			
3740
 
3741
			}#if end
3741
			}#if end
3742
 
3742
 
3743
		#如果檢查不通過
3743
		#如果檢查不通過
3744
		if($checkArguments["passed"]=="false"){
3744
		if($checkArguments["passed"]=="false"){
3745
			
3745
 
3746
			#設置執行失敗
3746
			#設置執行失敗
3747
			$result["status"]="false";
3747
			$result["status"]="false";
3748
			
3748
 
3749
			#設置執行錯誤訊息
3749
			#設置執行錯誤訊息
3750
			$result["error"]=$checkArguments;
3750
			$result["error"]=$checkArguments;
3751
 
3751
 
3752
			#回傳結果
3752
			#回傳結果
3753
			return $result;
3753
			return $result;
3754
			
3754
 
3755
			}#if end
3755
			}#if end
3756
		
3756
 
3757
		#執行 $conf["repeatTime"] 數
3757
		#執行 $conf["repeatTime"] 數
3758
		for($i=0;$i<$conf["repeatTime"];$i++){
3758
		for($i=0;$i<$conf["repeatTime"];$i++){
3759
		
3759
 
3760
			#函式說明: 
3760
			#函式說明:
3761
			#亂數產生特定陣列裡面的內容
3761
			#亂數產生特定陣列裡面的內容
3762
			#回傳結果:
3762
			#回傳結果:
3763
			#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
3763
			#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
3764
			#$result["function"],當前執行的函數名稱.
3764
			#$result["function"],當前執行的函數名稱.
3765
			#$result["error"],錯誤訊息陣列.
3765
			#$result["error"],錯誤訊息陣列.
Line 3774... Line 3774...
3774
			#無.
3774
			#無.
3775
			#備註:
3775
			#備註:
3776
			#無.
3776
			#無.
3777
			$randomFromArray=math::randomFromArray($conf["math::randomFromArray"]);
3777
			$randomFromArray=math::randomFromArray($conf["math::randomFromArray"]);
3778
			unset($conf["math::randomFromArray"]);
3778
			unset($conf["math::randomFromArray"]);
3779
			
3779
 
3780
			#如果執行異常
3780
			#如果執行異常
3781
			if($randomFromArray["status"]=="false"){
3781
			if($randomFromArray["status"]=="false"){
3782
				
3782
 
3783
				#設置執行失敗
3783
				#設置執行失敗
3784
				$result["status"]="false";
3784
				$result["status"]="false";
3785
				
3785
 
3786
				#設置執行錯誤訊息
3786
				#設置執行錯誤訊息
3787
				$result["error"]=$randomFromArray;
3787
				$result["error"]=$randomFromArray;
3788
 
3788
 
3789
				#回傳結果
3789
				#回傳結果
3790
				return $result;
3790
				return $result;
3791
				
3791
 
3792
				}#if end
3792
				}#if end
3793
				
3793
 
3794
			#取得該次產生元素的key
3794
			#取得該次產生元素的key
3795
			$result["content"]["name"][]=$randomFromArray["content"]["name"];
3795
			$result["content"]["name"][]=$randomFromArray["content"]["name"];
3796
			
3796
 
3797
			#取得該次產生元素的value
3797
			#取得該次產生元素的value
3798
			$result["content"]["value"][]=$randomFromArray["content"]["value"];
3798
			$result["content"]["value"][]=$randomFromArray["content"]["value"];
3799
		
3799
 
3800
			#串接該次產生元素的value
3800
			#串接該次產生元素的value
3801
			$result["content"]["str"]=$result["content"]["str"].$randomFromArray["content"]["value"];
3801
			$result["content"]["str"]=$result["content"]["str"].$randomFromArray["content"]["value"];
3802
		
3802
 
3803
			}#for end
3803
			}#for end
3804
		
3804
 
3805
		#設置結果正常
3805
		#設置結果正常
3806
		$result["status"]="true";
3806
		$result["status"]="true";
3807
	
3807
 
3808
		#回傳結果
3808
		#回傳結果
3809
		return $result;
3809
		return $result;
3810
	
3810
 
3811
		}#function randomFromArrayManyTimes end
3811
		}#function randomFromArrayManyTimes end
3812
 
3812
 
3813
	/*
3813
	/*
3814
	#函式說明: 
3814
	#函式說明:
3815
	#左方數值範圍要對應的右方數值範圍
3815
	#左方數值範圍要對應的右方數值範圍
3816
	#回傳結果:
3816
	#回傳結果:
3817
	#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
3817
	#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
3818
	#$result["function"],當前執行的函數名稱.
3818
	#$result["function"],當前執行的函數名稱.
3819
	#$result["error"],錯誤訊息陣列.
3819
	#$result["error"],錯誤訊息陣列.
Line 3829... Line 3829...
3829
	#無.
3829
	#無.
3830
	#備註:
3830
	#備註:
3831
	#無.
3831
	#無.
3832
	*/
3832
	*/
3833
	public static function key2value($conf){
3833
	public static function key2value($conf){
3834
	
3834
 
3835
		#初始化要回傳的內容
3835
		#初始化要回傳的內容
3836
		$result=array();
3836
		$result=array();
3837
		
3837
 
3838
		#記錄當前執行的函數名稱
3838
		#記錄當前執行的函數名稱
3839
		$result["function"]=__FUNCTION__;
3839
		$result["function"]=__FUNCTION__;
3840
 
3840
 
3841
		#如果 $conf 不為陣列
3841
		#如果 $conf 不為陣列
3842
		if(gettype($conf)!="array"){
3842
		if(gettype($conf)!="array"){
3843
			
3843
 
3844
			#設置執行失敗
3844
			#設置執行失敗
3845
			$result["status"]="false";
3845
			$result["status"]="false";
3846
			
3846
 
3847
			#設置執行錯誤訊息
3847
			#設置執行錯誤訊息
3848
			$result["error"][]="\$conf變數須為陣列形態";
3848
			$result["error"][]="\$conf變數須為陣列形態";
3849
 
3849
 
3850
			#如果傳入的參數為 null
3850
			#如果傳入的參數為 null
3851
			if($conf==null){
3851
			if($conf==null){
3852
				
3852
 
3853
				#設置執行錯誤訊息
3853
				#設置執行錯誤訊息
3854
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3854
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3855
				
3855
 
3856
				}#if end
3856
				}#if end
3857
 
3857
 
3858
			#回傳結果
3858
			#回傳結果
3859
			return $result;
3859
			return $result;
3860
			
3860
 
3861
			}#if end
3861
			}#if end
3862
 
3862
 
3863
		#取得使用的參數
3863
		#取得使用的參數
3864
		$result["argu"]=$conf;
3864
		$result["argu"]=$conf;
3865
 
3865
 
Line 3879... Line 3879...
3879
		#必填寫的參數:
3879
		#必填寫的參數:
3880
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3880
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3881
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3881
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3882
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3882
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3883
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rangeF");
3883
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rangeF");
3884
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
3884
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
3885
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
3885
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
3886
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3886
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3887
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3887
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3888
		#可以省略的參數:
3888
		#可以省略的參數:
3889
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
3889
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
3890
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
3890
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
3891
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3891
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3892
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("rangeT");
3892
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("rangeT");
3893
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
3893
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3894
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
3894
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
3895
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3895
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3896
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
3896
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
3897
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3897
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3898
		#$conf["arrayCountEqualCheck"][]=array();
3898
		#$conf["arrayCountEqualCheck"][]=array();
Line 3901... Line 3901...
3901
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3901
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3902
		unset($conf["variableCheck::checkArguments"]);
3902
		unset($conf["variableCheck::checkArguments"]);
3903
 
3903
 
3904
		#如果檢查參數失敗
3904
		#如果檢查參數失敗
3905
		if($checkArguments["status"]=="false"){
3905
		if($checkArguments["status"]=="false"){
3906
			
3906
 
3907
			#設置執行失敗
3907
			#設置執行失敗
3908
			$result["status"]="false";
3908
			$result["status"]="false";
3909
			
3909
 
3910
			#設置執行錯誤訊息
3910
			#設置執行錯誤訊息
3911
			$result["error"]=$checkArguments;
3911
			$result["error"]=$checkArguments;
3912
 
3912
 
3913
			#回傳結果
3913
			#回傳結果
3914
			return $result;
3914
			return $result;
3915
			
3915
 
3916
			}#if end
3916
			}#if end
3917
 
3917
 
3918
		#如果檢查不通過
3918
		#如果檢查不通過
3919
		if($checkArguments["passed"]=="false"){
3919
		if($checkArguments["passed"]=="false"){
3920
			
3920
 
3921
			#設置執行失敗
3921
			#設置執行失敗
3922
			$result["status"]="false";
3922
			$result["status"]="false";
3923
			
3923
 
3924
			#設置執行錯誤訊息
3924
			#設置執行錯誤訊息
3925
			$result["error"]=$checkArguments;
3925
			$result["error"]=$checkArguments;
3926
 
3926
 
3927
			#回傳結果
3927
			#回傳結果
3928
			return $result;
3928
			return $result;
3929
			
3929
 
3930
			}#if end
3930
			}#if end
3931
			
3931
 
3932
		#如果右手方對應的整數陣列不存在
3932
		#如果右手方對應的整數陣列不存在
3933
		if(!isset($conf["rangeT"])){
3933
		if(!isset($conf["rangeT"])){
3934
			
3934
 
3935
			#跑101次
3935
			#跑101次
3936
			for($i=0;$i<=100;$i++){
3936
			for($i=0;$i<=100;$i++){
3937
			
3937
 
3938
				#設置rangeT
3938
				#設置rangeT
3939
				$conf["rangeT"][]=$i;
3939
				$conf["rangeT"][]=$i;
3940
			
3940
 
3941
				}#for end
3941
				}#for end
3942
		
3942
 
3943
			}#if end
3943
			}#if end
3944
			
3944
 
3945
		#取得左手邊的數值數目
3945
		#取得左手邊的數值數目
3946
		$rangeFc=count($conf["rangeF"]);
3946
		$rangeFc=count($conf["rangeF"]);
3947
	
3947
 
3948
		#取得右手邊的數值數目
3948
		#取得右手邊的數值數目
3949
		$rangeTc=count($conf["rangeT"]);
3949
		$rangeTc=count($conf["rangeT"]);
3950
	
3950
 
3951
		#一單位的 $rangeTc 等於多少 $rangeFc
3951
		#一單位的 $rangeTc 等於多少 $rangeFc
3952
		$tPerunitF=$rangeTc/$rangeFc;
3952
		$tPerunitF=$rangeTc/$rangeFc;
3953
 
3953
 
3954
		#針對每個 $rangeFc
3954
		#針對每個 $rangeFc
3955
		for($i=0;$i<$rangeFc;$i++){
3955
		for($i=0;$i<$rangeFc;$i++){
3956
		
3956
 
3957
			#設置轉換的結果
3957
			#設置轉換的結果
3958
			$result["content"][$conf["rangeF"][$i]]=$tPerunitF*$i+$conf["rangeT"][0];
3958
			$result["content"][$conf["rangeF"][$i]]=$tPerunitF*$i+$conf["rangeT"][0];
3959
			
3959
 
3960
			#轉換後的數值不能超過左手邊的最大值
3960
			#轉換後的數值不能超過左手邊的最大值
3961
			if($result["content"][$conf["rangeF"][$i]]>$conf["rangeT"][count($conf["rangeT"])-1]){
3961
			if($result["content"][$conf["rangeF"][$i]]>$conf["rangeT"][count($conf["rangeT"])-1]){
3962
			
3962
 
3963
				#防止左手邊的最大數值
3963
				#防止左手邊的最大數值
3964
				$result["content"][$conf["rangeF"][$i]]=$conf["rangeT"][count($conf["rangeT"])-1];
3964
				$result["content"][$conf["rangeF"][$i]]=$conf["rangeT"][count($conf["rangeT"])-1];
3965
			
3965
 
3966
				}#if end
3966
				}#if end
3967
		
3967
 
3968
			}#for end
3968
			}#for end
3969
 
3969
 
3970
		#初始化執行正常
3970
		#初始化執行正常
3971
		$result["status"]="true";
3971
		$result["status"]="true";
3972
	
3972
 
3973
		#回傳結果
3973
		#回傳結果
3974
		return $result;
3974
		return $result;
3975
		
3975
 
3976
		}#function key2value end
3976
		}#function key2value end
3977
		
3977
 
3978
	/*
3978
	/*
3979
	#函式說明: 
3979
	#函式說明:
3980
	#數值對應的key
3980
	#數值對應的key
3981
	#回傳結果:
3981
	#回傳結果:
3982
	#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
3982
	#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
3983
	#$result["function"],當前執行的函數名稱.
3983
	#$result["function"],當前執行的函數名稱.
3984
	#$result["error"],錯誤訊息陣列.
3984
	#$result["error"],錯誤訊息陣列.
Line 3998... Line 3998...
3998
	*/
3998
	*/
3999
	public static function value2key($conf){
3999
	public static function value2key($conf){
4000
 
4000
 
4001
		#初始化要回傳的內容
4001
		#初始化要回傳的內容
4002
		$result=array();
4002
		$result=array();
4003
		
4003
 
4004
		#記錄當前執行的函數名稱
4004
		#記錄當前執行的函數名稱
4005
		$result["function"]=__FUNCTION__;
4005
		$result["function"]=__FUNCTION__;
4006
 
4006
 
4007
		#如果 $conf 不為陣列
4007
		#如果 $conf 不為陣列
4008
		if(gettype($conf)!="array"){
4008
		if(gettype($conf)!="array"){
4009
			
4009
 
4010
			#設置執行失敗
4010
			#設置執行失敗
4011
			$result["status"]="false";
4011
			$result["status"]="false";
4012
			
4012
 
4013
			#設置執行錯誤訊息
4013
			#設置執行錯誤訊息
4014
			$result["error"][]="\$conf變數須為陣列形態";
4014
			$result["error"][]="\$conf變數須為陣列形態";
4015
 
4015
 
4016
			#如果傳入的參數為 null
4016
			#如果傳入的參數為 null
4017
			if($conf==null){
4017
			if($conf==null){
4018
				
4018
 
4019
				#設置執行錯誤訊息
4019
				#設置執行錯誤訊息
4020
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4020
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4021
				
4021
 
4022
				}#if end
4022
				}#if end
4023
 
4023
 
4024
			#回傳結果
4024
			#回傳結果
4025
			return $result;
4025
			return $result;
4026
			
4026
 
4027
			}#if end
4027
			}#if end
4028
 
4028
 
4029
		#取得使用的參數
4029
		#取得使用的參數
4030
		$result["argu"]=$conf;
4030
		$result["argu"]=$conf;
4031
 
4031
 
Line 4045... Line 4045...
4045
		#必填寫的參數:
4045
		#必填寫的參數:
4046
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4046
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4047
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4047
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4048
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4048
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4049
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("value","reference");
4049
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("value","reference");
4050
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
4050
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
4051
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("double","array");
4051
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("double","array");
4052
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4052
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4053
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4053
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4054
		#可以省略的參數:
4054
		#可以省略的參數:
4055
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
4055
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
4056
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4056
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4057
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4057
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4058
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("rangeT");
4058
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("rangeT");
4059
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
4059
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4060
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
4060
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
4061
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4061
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4062
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
4062
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
4063
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4063
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4064
		#$conf["arrayCountEqualCheck"][]=array();
4064
		#$conf["arrayCountEqualCheck"][]=array();
Line 4067... Line 4067...
4067
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4067
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4068
		unset($conf["variableCheck::checkArguments"]);
4068
		unset($conf["variableCheck::checkArguments"]);
4069
 
4069
 
4070
		#如果檢查參數失敗
4070
		#如果檢查參數失敗
4071
		if($checkArguments["status"]=="false"){
4071
		if($checkArguments["status"]=="false"){
4072
			
4072
 
4073
			#設置執行失敗
4073
			#設置執行失敗
4074
			$result["status"]="false";
4074
			$result["status"]="false";
4075
			
4075
 
4076
			#設置執行錯誤訊息
4076
			#設置執行錯誤訊息
4077
			$result["error"]=$checkArguments;
4077
			$result["error"]=$checkArguments;
4078
 
4078
 
4079
			#回傳結果
4079
			#回傳結果
4080
			return $result;
4080
			return $result;
4081
			
4081
 
4082
			}#if end
4082
			}#if end
4083
 
4083
 
4084
		#如果檢查不通過
4084
		#如果檢查不通過
4085
		if($checkArguments["passed"]=="false"){
4085
		if($checkArguments["passed"]=="false"){
4086
			
4086
 
4087
			#設置執行失敗
4087
			#設置執行失敗
4088
			$result["status"]="false";
4088
			$result["status"]="false";
4089
			
4089
 
4090
			#設置執行錯誤訊息
4090
			#設置執行錯誤訊息
4091
			$result["error"]=$checkArguments;
4091
			$result["error"]=$checkArguments;
4092
 
4092
 
4093
			#回傳結果
4093
			#回傳結果
4094
			return $result;
4094
			return $result;
4095
			
4095
 
4096
			}#if end
4096
			}#if end
4097
 
4097
 
4098
		#儲存最後發現小於 $value 的 key
4098
		#儲存最後發現小於 $value 的 key
4099
		$lastKey=0;
4099
		$lastKey=0;
4100
		
4100
 
4101
		#儲存最後發現小於 $value 的 valueInKey
4101
		#儲存最後發現小於 $value 的 valueInKey
4102
		$lastValue=0;
4102
		$lastValue=0;
4103
		
4103
 
4104
		#儲存最先發現大於 $value 的 key
4104
		#儲存最先發現大於 $value 的 key
4105
		$thisKey=0;
4105
		$thisKey=0;
4106
				
4106
 
4107
		#儲存最先發現大於 $value 的 valueInKey
4107
		#儲存最先發現大於 $value 的 valueInKey
4108
		$thisValue=0;
4108
		$thisValue=0;
4109
 
4109
 
4110
		#針對每個參照數值
4110
		#針對每個參照數值
4111
		foreach($conf["reference"] as $key=>$value){
4111
		foreach($conf["reference"] as $key=>$value){
4112
		 
4112
 
4113
		 	#如果要查的數值大於當前對應的 $key
4113
		 	#如果要查的數值大於當前對應的 $key
4114
		 	if($conf["value"]>$value){
4114
		 	if($conf["value"]>$value){
4115
		 	
4115
 
4116
		 		#儲存最後發現小於 $value 的 key
4116
		 		#儲存最後發現小於 $value 的 key
4117
				$lastKey=$key;
4117
				$lastKey=$key;
4118
				
4118
 
4119
				#儲存最後發現小於 $value 的 valueInKey
4119
				#儲存最後發現小於 $value 的 valueInKey
4120
				$lastValue=$value;
4120
				$lastValue=$value;
4121
				 	
4121
 
4122
				#如果已經是最後一個數值了
4122
				#如果已經是最後一個數值了
4123
				if($key===count($conf["reference"])-1){
4123
				if($key===count($conf["reference"])-1){
4124
				
4124
 
4125
					#儲存最先發現大於 $value 的 key
4125
					#儲存最先發現大於 $value 的 key
4126
					$thisKey=$key;
4126
					$thisKey=$key;
4127
				
4127
 
4128
					#儲存最先發現大於 $value 的 valueInKey
4128
					#儲存最先發現大於 $value 的 valueInKey
4129
					$thisValue=$value;
4129
					$thisValue=$value;
4130
				
4130
 
4131
					}#if end	 	
4131
					}#if end
4132
				 	
4132
 
4133
		 		#繼續執行
4133
		 		#繼續執行
4134
		 		continue;
4134
		 		continue;
4135
		 	
4135
 
4136
		 		}#if end 	
4136
		 		}#if end
4137
		 	
4137
 
4138
		 	#反之
4138
		 	#反之
4139
		 	else{
4139
		 	else{
4140
		 	
4140
 
4141
		 		#儲存最先發現大於 $value 的 key
4141
		 		#儲存最先發現大於 $value 的 key
4142
				$thisKey=$key;
4142
				$thisKey=$key;
4143
				
4143
 
4144
				#儲存最先發現大於 $value 的 valueInKey
4144
				#儲存最先發現大於 $value 的 valueInKey
4145
				$thisValue=$value;
4145
				$thisValue=$value;
4146
		 	
4146
 
4147
		 		#跳出 foreach
4147
		 		#跳出 foreach
4148
		 		break;
4148
		 		break;
4149
		 	
4149
 
4150
		 		}#else end	
4150
		 		}#else end
4151
		 
4151
 
4152
		 	}#foreach end
4152
		 	}#foreach end
4153
 
4153
 
4154
		#取得要計算數值對於上個value的差距
4154
		#取得要計算數值對於上個value的差距
4155
		$rangeLeft=$value-$lastValue;
4155
		$rangeLeft=$value-$lastValue;
4156
		
4156
 
4157
		#取得要計算數值對於下個value的差距
4157
		#取得要計算數值對於下個value的差距
4158
		$rangeRight=$thisValue-$value;
4158
		$rangeRight=$thisValue-$value;
4159
		
4159
 
4160
		#如果比較靠近上個數值
4160
		#如果比較靠近上個數值
4161
		if($rangeLeft<$rangeRight){
4161
		if($rangeLeft<$rangeRight){
4162
		
4162
 
4163
			#設置結果為上個 key
4163
			#設置結果為上個 key
4164
			$result["content"]=$lastKey;
4164
			$result["content"]=$lastKey;
4165
		
4165
 
4166
			}#if end
4166
			}#if end
4167
			
4167
 
4168
		#反之	
4168
		#反之
4169
		else{
4169
		else{
4170
			#設置結果為下個 key
4170
			#設置結果為下個 key
4171
			$result["content"]=$thisKey;
4171
			$result["content"]=$thisKey;
4172
			
4172
 
4173
			}#else end
4173
			}#else end
4174
			
4174
 
4175
		#設置執行正常
4175
		#設置執行正常
4176
		$result["status"]="true";
4176
		$result["status"]="true";
4177
		
4177
 
4178
		#回傳結果
4178
		#回傳結果
4179
		return $result;
4179
		return $result;
4180
 
4180
 
4181
		}#function value2key end
4181
		}#function value2key end
4182
		
4182
 
4183
	/*
4183
	/*
4184
	#函式說明:
4184
	#函式說明:
4185
	#建立一對一的數值對照表,左右都對應到整數值.
4185
	#建立一對一的數值對照表,左右都對應到整數值.
4186
	#回傳結果:
4186
	#回傳結果:
4187
	#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
4187
	#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
Line 4200... Line 4200...
4200
	#無.
4200
	#無.
4201
	#備註:
4201
	#備註:
4202
	#無.
4202
	#無.
4203
	*/
4203
	*/
4204
	public static function fixedKeyToValueReversed(&$conf=array()){
4204
	public static function fixedKeyToValueReversed(&$conf=array()){
4205
	
4205
 
4206
		#初始化要回傳的內容
4206
		#初始化要回傳的內容
4207
		$result=array();
4207
		$result=array();
4208
		
4208
 
4209
		#記錄當前執行的函數名稱
4209
		#記錄當前執行的函數名稱
4210
		$result["function"]=__FUNCTION__;
4210
		$result["function"]=__FUNCTION__;
4211
 
4211
 
4212
		#如果 $conf 不為陣列
4212
		#如果 $conf 不為陣列
4213
		if(gettype($conf)!="array"){
4213
		if(gettype($conf)!="array"){
4214
			
4214
 
4215
			#設置執行失敗
4215
			#設置執行失敗
4216
			$result["status"]="false";
4216
			$result["status"]="false";
4217
			
4217
 
4218
			#設置執行錯誤訊息
4218
			#設置執行錯誤訊息
4219
			$result["error"][]="\$conf變數須為陣列形態";
4219
			$result["error"][]="\$conf變數須為陣列形態";
4220
 
4220
 
4221
			#如果傳入的參數為 null
4221
			#如果傳入的參數為 null
4222
			if($conf==null){
4222
			if($conf==null){
4223
				
4223
 
4224
				#設置執行錯誤訊息
4224
				#設置執行錯誤訊息
4225
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4225
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4226
				
4226
 
4227
				}#if end
4227
				}#if end
4228
 
4228
 
4229
			#回傳結果
4229
			#回傳結果
4230
			return $result;
4230
			return $result;
4231
			
4231
 
4232
			}#if end
4232
			}#if end
4233
 
4233
 
4234
		#取得使用的參數
4234
		#取得使用的參數
4235
		$result["argu"]=$conf;
4235
		$result["argu"]=$conf;
4236
 
4236
 
Line 4250... Line 4250...
4250
		#必填寫的參數:
4250
		#必填寫的參數:
4251
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4251
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4252
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4252
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4253
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4253
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4254
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rangeF","rangeT");
4254
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rangeF","rangeT");
4255
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
4255
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
4256
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
4256
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
4257
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4257
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4258
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4258
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4259
		#可以省略的參數:
4259
		#可以省略的參數:
4260
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
4260
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
4261
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4261
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4262
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4262
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4263
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("rangeT");
4263
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("rangeT");
4264
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
4264
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4265
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
4265
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
4266
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4266
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4267
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
4267
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
4268
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4268
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4269
		#$conf["arrayCountEqualCheck"][]=array();
4269
		#$conf["arrayCountEqualCheck"][]=array();
Line 4272... Line 4272...
4272
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4272
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4273
		unset($conf["variableCheck::checkArguments"]);
4273
		unset($conf["variableCheck::checkArguments"]);
4274
 
4274
 
4275
		#如果檢查參數失敗
4275
		#如果檢查參數失敗
4276
		if($checkArguments["status"]=="false"){
4276
		if($checkArguments["status"]=="false"){
4277
			
4277
 
4278
			#設置執行失敗
4278
			#設置執行失敗
4279
			$result["status"]="false";
4279
			$result["status"]="false";
4280
			
4280
 
4281
			#設置執行錯誤訊息
4281
			#設置執行錯誤訊息
4282
			$result["error"]=$checkArguments;
4282
			$result["error"]=$checkArguments;
4283
 
4283
 
4284
			#回傳結果
4284
			#回傳結果
4285
			return $result;
4285
			return $result;
4286
			
4286
 
4287
			}#if end
4287
			}#if end
4288
 
4288
 
4289
		#如果檢查不通過
4289
		#如果檢查不通過
4290
		if($checkArguments["passed"]=="false"){
4290
		if($checkArguments["passed"]=="false"){
4291
			
4291
 
4292
			#設置執行失敗
4292
			#設置執行失敗
4293
			$result["status"]="false";
4293
			$result["status"]="false";
4294
			
4294
 
4295
			#設置執行錯誤訊息
4295
			#設置執行錯誤訊息
4296
			$result["error"]=$checkArguments;
4296
			$result["error"]=$checkArguments;
4297
 
4297
 
4298
			#回傳結果
4298
			#回傳結果
4299
			return $result;
4299
			return $result;
4300
			
4300
 
4301
			}#if end
4301
			}#if end
4302
			
4302
 
4303
		#檢查參數
4303
		#檢查參數
4304
		if( !isset($conf["rangeF"]["s"]) || !isset($conf["rangeF"]["e"])){
4304
		if( !isset($conf["rangeF"]["s"]) || !isset($conf["rangeF"]["e"])){
4305
		
4305
 
4306
			#不通過檢查,設定執行錯誤
4306
			#不通過檢查,設定執行錯誤
4307
			$result["error"][]="參數 \$conf[\"rangeF\"][\"s\"] 與 \$conf[\"rangeF\"][\"s\"] 必填";
4307
			$result["error"][]="參數 \$conf[\"rangeF\"][\"s\"] 與 \$conf[\"rangeF\"][\"s\"] 必填";
4308
			
4308
 
4309
			#設置執行失敗
4309
			#設置執行失敗
4310
			$result["status"]="error";
4310
			$result["status"]="error";
4311
			
4311
 
4312
			#回傳結果
4312
			#回傳結果
4313
			return $result;
4313
			return $result;
4314
		
4314
 
4315
			}#if end
4315
			}#if end
4316
			
4316
 
4317
		#檢查參數
4317
		#檢查參數
4318
		if( !isset($conf["rangeT"]["s"]) || !isset($conf["rangeT"]["e"])){
4318
		if( !isset($conf["rangeT"]["s"]) || !isset($conf["rangeT"]["e"])){
4319
		
4319
 
4320
			#不通過檢查,設定執行錯誤
4320
			#不通過檢查,設定執行錯誤
4321
			$result["error"][]="參數 \$conf[\"rangeT\"][\"s\"] 與 \$conf[\"rangeT\"][\"s\"] 必填";
4321
			$result["error"][]="參數 \$conf[\"rangeT\"][\"s\"] 與 \$conf[\"rangeT\"][\"s\"] 必填";
4322
			
4322
 
4323
			#設置執行失敗
4323
			#設置執行失敗
4324
			$result["status"]="error";
4324
			$result["status"]="error";
4325
			
4325
 
4326
			#回傳結果
4326
			#回傳結果
4327
			return $result;
4327
			return $result;
4328
		
4328
 
4329
			}#if end	
4329
			}#if end
4330
			
4330
 
4331
		#初始化儲存左方對照表
4331
		#初始化儲存左方對照表
4332
		$rangeF=array();	
4332
		$rangeF=array();
4333
			
4333
 
4334
		#建立左方對照表
4334
		#建立左方對照表
4335
		for($i=$conf["rangeF"]["s"];$i<=$conf["rangeF"]["e"];$i++){
4335
		for($i=$conf["rangeF"]["s"];$i<=$conf["rangeF"]["e"];$i++){
4336
		
4336
 
4337
			$rangeF[]=$i;
4337
			$rangeF[]=$i;
4338
		
4338
 
4339
			}#for end
4339
			}#for end
4340
			
4340
 
4341
		#初始化儲存右方對照表
4341
		#初始化儲存右方對照表
4342
		$rangeT=array();	
4342
		$rangeT=array();
4343
			
4343
 
4344
		#建立左方對照表
4344
		#建立左方對照表
4345
		for($i=$conf["rangeT"]["s"];$i<=$conf["rangeT"]["e"];$i++){
4345
		for($i=$conf["rangeT"]["s"];$i<=$conf["rangeT"]["e"];$i++){
4346
		
4346
 
4347
			$rangeT[]=$i;
4347
			$rangeT[]=$i;
4348
		
4348
 
4349
			}#for end
4349
			}#for end
4350
			
4350
 
4351
		#函式說明: 
4351
		#函式說明:
4352
		#左方數值範圍要對應的右方數值範圍
4352
		#左方數值範圍要對應的右方數值範圍
4353
		#回傳結果:
4353
		#回傳結果:
4354
		#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
4354
		#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
4355
		#$result["function"],當前執行的函數名稱.
4355
		#$result["function"],當前執行的函數名稱.
4356
		#$result["error"],錯誤訊息陣列.
4356
		#$result["error"],錯誤訊息陣列.
Line 4363... Line 4363...
4363
		$conf["math::key2value"]["rangeT"]=$rangeT;
4363
		$conf["math::key2value"]["rangeT"]=$rangeT;
4364
		#備註:
4364
		#備註:
4365
		#建構中.
4365
		#建構中.
4366
		$ftTable=math::key2value($conf["math::key2value"]);
4366
		$ftTable=math::key2value($conf["math::key2value"]);
4367
		unset($conf["math::key2value"]);
4367
		unset($conf["math::key2value"]);
4368
		
4368
 
4369
		#如果執行失敗
4369
		#如果執行失敗
4370
		if($ftTable["status"]==="false")
4370
		if($ftTable["status"]==="false")
4371
		{
4371
		{
4372
		
4372
 
4373
			#設置執行失敗
4373
			#設置執行失敗
4374
			$result["status"]="false";
4374
			$result["status"]="false";
4375
			
4375
 
4376
			#設置執行錯誤訊息
4376
			#設置執行錯誤訊息
4377
			$result["error"]=$ftTable;
4377
			$result["error"]=$ftTable;
4378
 
4378
 
4379
			#回傳結果
4379
			#回傳結果
4380
			return $result;
4380
			return $result;
4381
		
4381
 
4382
		}#if end
4382
		}#if end
4383
		
4383
 
4384
		#debug
4384
		#debug
4385
		#var_dump($ftTable);exit;
4385
		#var_dump($ftTable);exit;
4386
		
4386
 
4387
		#取得左方對應右方的對照表
4387
		#取得左方對應右方的對照表
4388
		$ftTable=$ftTable["content"];
4388
		$ftTable=$ftTable["content"];
4389
	
4389
 
4390
		#函式說明: 
4390
		#函式說明:
4391
		#左方數值範圍要對應的右方數值範圍
4391
		#左方數值範圍要對應的右方數值範圍
4392
		#回傳結果:
4392
		#回傳結果:
4393
		#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
4393
		#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
4394
		#$result["function"],當前執行的函數名稱.
4394
		#$result["function"],當前執行的函數名稱.
4395
		#$result["error"],錯誤訊息陣列.
4395
		#$result["error"],錯誤訊息陣列.
Line 4402... Line 4402...
4402
		$conf["math::key2value"]["rangeT"]=$rangeF;
4402
		$conf["math::key2value"]["rangeT"]=$rangeF;
4403
		#備註:
4403
		#備註:
4404
		#建構中.
4404
		#建構中.
4405
		$tfTable=math::key2value($conf["math::key2value"]);
4405
		$tfTable=math::key2value($conf["math::key2value"]);
4406
		unset($conf["math::key2value"]);
4406
		unset($conf["math::key2value"]);
4407
		
4407
 
4408
		#如果執行失敗
4408
		#如果執行失敗
4409
		if($tfTable["status"]==="false")
4409
		if($tfTable["status"]==="false")
4410
		{
4410
		{
4411
		
4411
 
4412
			#設置執行失敗
4412
			#設置執行失敗
4413
			$result["status"]="false";
4413
			$result["status"]="false";
4414
			
4414
 
4415
			#設置執行錯誤訊息
4415
			#設置執行錯誤訊息
4416
			$result["error"]=$tfTable;
4416
			$result["error"]=$tfTable;
4417
 
4417
 
4418
			#回傳結果
4418
			#回傳結果
4419
			return $result;
4419
			return $result;
4420
		
4420
 
4421
		}#if end
4421
		}#if end
4422
		
4422
 
4423
		#取得左方對應右方的對照表
4423
		#取得左方對應右方的對照表
4424
		$tfTable=$tfTable["content"];
4424
		$tfTable=$tfTable["content"];
4425
	
4425
 
4426
		#跑$conf["rangeF"]["e"]-$conf["rangeF"]["s"]+1次,修正轉換誤差.
4426
		#跑$conf["rangeF"]["e"]-$conf["rangeF"]["s"]+1次,修正轉換誤差.
4427
		for($i=$conf["rangeF"]["s"];$i<=$conf["rangeF"]["e"];$i++){
4427
		for($i=$conf["rangeF"]["s"];$i<=$conf["rangeF"]["e"];$i++){
4428
		
4428
 
4429
			#函式說明: 
4429
			#函式說明:
4430
			#數值對應的key
4430
			#數值對應的key
4431
			#回傳結果:
4431
			#回傳結果:
4432
			#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
4432
			#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
4433
			#$result["function"],當前執行的函數名稱.
4433
			#$result["function"],當前執行的函數名稱.
4434
			#$result["error"],錯誤訊息陣列.
4434
			#$result["error"],錯誤訊息陣列.
Line 4451... Line 4451...
4451
 
4451
 
4452
				#結束執行
4452
				#結束執行
4453
				exit;
4453
				exit;
4454
 
4454
 
4455
				}#if end
4455
				}#if end
4456
			
4456
 
4457
			#var_dump($value2key);exit;
4457
			#var_dump($value2key);exit;
4458
			
4458
 
4459
			#fix 轉換誤差
4459
			#fix 轉換誤差
4460
			$ft[$i]=$value2key["content"];
4460
			$ft[$i]=$value2key["content"];
4461
 
4461
 
4462
			}#for end	
4462
			}#for end
4463
			
4463
 
4464
		#取得左右一對一的對照表
4464
		#取得左右一對一的對照表
4465
		$result["content"]=$ft;
4465
		$result["content"]=$ft;
4466
		
4466
 
4467
		#設置執行正常
4467
		#設置執行正常
4468
		$result["status"]="true";
4468
		$result["status"]="true";
4469
	
4469
 
4470
		#回傳結果
4470
		#回傳結果
4471
		return $result;
4471
		return $result;
4472
	
4472
 
4473
		}#function fixedKeyToValueReversed end	
4473
		}#function fixedKeyToValueReversed end
4474
 
4474
 
4475
	/*
4475
	/*
4476
	#函式說明:get Euler's number
4476
	#函式說明:get Euler's number
4477
	#回傳結果:
4477
	#回傳結果:
4478
	#$result["status"],執行正常("true")與否("false").
4478
	#$result["status"],執行正常("true")與否("false").
Line 4488... Line 4488...
4488
	#https://en.wikipedia.org/wiki/E_(mathematical_constant)
4488
	#https://en.wikipedia.org/wiki/E_(mathematical_constant)
4489
	#備註:
4489
	#備註:
4490
	#無.
4490
	#無.
4491
	*/
4491
	*/
4492
	public static function getExp(&$conf=array()){
4492
	public static function getExp(&$conf=array()){
4493
	
4493
 
4494
		#初始化要回傳的結果
4494
		#初始化要回傳的結果
4495
		$result=array();
4495
		$result=array();
4496
 
4496
 
4497
		#取得當前執行的函數名稱
4497
		#取得當前執行的函數名稱
4498
		$result["function"]=__FUNCTION__;
4498
		$result["function"]=__FUNCTION__;
Line 4519... Line 4519...
4519
 
4519
 
4520
			#回傳結果
4520
			#回傳結果
4521
			return $result;
4521
			return $result;
4522
 
4522
 
4523
			}#if end
4523
			}#if end
4524
	
4524
 
4525
		#函式說明:
4525
		#函式說明:
4526
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4526
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4527
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4527
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4528
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4528
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4529
		#$result["function"],當前執行的函式名稱.
4529
		#$result["function"],當前執行的函式名稱.
Line 4568... Line 4568...
4568
		#$conf["arrayCountEqualCheck"][]=array();
4568
		#$conf["arrayCountEqualCheck"][]=array();
4569
		#參考資料來源:
4569
		#參考資料來源:
4570
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4570
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4571
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4571
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4572
		unset($conf["variableCheck::checkArguments"]);
4572
		unset($conf["variableCheck::checkArguments"]);
4573
	
4573
 
4574
		#如果檢查參數失敗
4574
		#如果檢查參數失敗
4575
		if($checkArguments["status"]==="false"){
4575
		if($checkArguments["status"]==="false"){
4576
		
4576
 
4577
			#設置執行失敗
4577
			#設置執行失敗
4578
			$result["status"]="false";
4578
			$result["status"]="false";
4579
		
4579
 
4580
			#設置執行錯誤
4580
			#設置執行錯誤
4581
			$result["error"]=$checkArguments;
4581
			$result["error"]=$checkArguments;
4582
		
4582
 
4583
			#回傳結果
4583
			#回傳結果
4584
			return $result;
4584
			return $result;
4585
		
4585
 
4586
			}#if end
4586
			}#if end
4587
			
4587
 
4588
		#如果檢查參數不通過
4588
		#如果檢查參數不通過
4589
		if($checkArguments["passed"]==="false"){
4589
		if($checkArguments["passed"]==="false"){
4590
		
4590
 
4591
			#設置執行失敗
4591
			#設置執行失敗
4592
			$result["status"]="false";
4592
			$result["status"]="false";
4593
		
4593
 
4594
			#設置執行錯誤
4594
			#設置執行錯誤
4595
			$result["error"]=$checkArguments;
4595
			$result["error"]=$checkArguments;
4596
		
4596
 
4597
			#回傳結果
4597
			#回傳結果
4598
			return $result;
4598
			return $result;
4599
		
4599
 
4600
			}#if end
4600
			}#if end
4601
			
4601
 
4602
		#設置要回傳的內容為常數 e 的 $conf["pow"] 次方
4602
		#設置要回傳的內容為常數 e 的 $conf["pow"] 次方
4603
		$result["content"]=exp($conf["pow"]);
4603
		$result["content"]=exp($conf["pow"]);
4604
	
4604
 
4605
		#設置執行正確
4605
		#設置執行正確
4606
		$result["status"]="true";
4606
		$result["status"]="true";
4607
	
4607
 
4608
		#回傳結果
4608
		#回傳結果
4609
		return $result;
4609
		return $result;
4610
	
4610
 
4611
		}#function getExp end
4611
		}#function getExp end
4612
			
4612
 
4613
	/*
4613
	/*
4614
	#函式說明:
4614
	#函式說明:
4615
	#將16進位的16位數,轉換為小數點後到7位的gp表示方法.
4615
	#將16進位的16位數,轉換為小數點後到7位的gp表示方法.
4616
	#回傳結果:
4616
	#回傳結果:
4617
	#$result["status"],執行正常("true")與否("false").
4617
	#$result["status"],執行正常("true")與否("false").
Line 4625... Line 4625...
4625
	#$conf["reverse"]="true";
4625
	#$conf["reverse"]="true";
4626
	#參考資料:
4626
	#參考資料:
4627
	#無.
4627
	#無.
4628
	#備註:
4628
	#備註:
4629
	#無.
4629
	#無.
4630
	*/	
4630
	*/
4631
	public static function raw2gps(&$conf=array()){
4631
	public static function raw2gps(&$conf=array()){
4632
	
4632
 
4633
		#初始化要回傳的結果
4633
		#初始化要回傳的結果
4634
		$result=array();
4634
		$result=array();
4635
 
4635
 
4636
		#取得當前執行的函數名稱
4636
		#取得當前執行的函數名稱
4637
		$result["function"]=__FUNCTION__;
4637
		$result["function"]=__FUNCTION__;
Line 4721... Line 4721...
4721
		#$conf["arrayCountEqualCheck"][]=array();
4721
		#$conf["arrayCountEqualCheck"][]=array();
4722
		#參考資料來源:
4722
		#參考資料來源:
4723
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4723
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4724
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4724
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4725
		unset($conf["variableCheck::checkArguments"]);
4725
		unset($conf["variableCheck::checkArguments"]);
4726
				
4726
 
4727
		#如果檢查參數失敗
4727
		#如果檢查參數失敗
4728
		if($checkArguments["status"]==="false"){
4728
		if($checkArguments["status"]==="false"){
4729
		
4729
 
4730
			#設置執行失敗
4730
			#設置執行失敗
4731
			$result["status"]="false";
4731
			$result["status"]="false";
4732
		
4732
 
4733
			#設置執行錯誤
4733
			#設置執行錯誤
4734
			$result["error"]=$checkArguments;
4734
			$result["error"]=$checkArguments;
4735
		
4735
 
4736
			#回傳結果
4736
			#回傳結果
4737
			return $result;
4737
			return $result;
4738
		
4738
 
4739
			}#if end
4739
			}#if end
4740
			
4740
 
4741
		#如果檢查參數不通過
4741
		#如果檢查參數不通過
4742
		if($checkArguments["passed"]==="false"){
4742
		if($checkArguments["passed"]==="false"){
4743
		
4743
 
4744
			#設置執行失敗
4744
			#設置執行失敗
4745
			$result["status"]="false";
4745
			$result["status"]="false";
4746
		
4746
 
4747
			#設置執行錯誤
4747
			#設置執行錯誤
4748
			$result["error"]=$checkArguments;
4748
			$result["error"]=$checkArguments;
4749
		
4749
 
4750
			#回傳結果
4750
			#回傳結果
4751
			return $result;
4751
			return $result;
4752
		
4752
 
4753
			}#if end
4753
			}#if end
4754
		
4754
 
4755
		#如果要把經緯度變成16進位的16位數字
4755
		#如果要把經緯度變成16進位的16位數字
4756
		if($conf["reverse"]==="true"){
4756
		if($conf["reverse"]==="true"){
4757
			
4757
 
4758
			#函式說明:
4758
			#函式說明:
4759
			#將固定格式的字串分開,並回傳分開的結果。
4759
			#將固定格式的字串分開,並回傳分開的結果。
4760
			#回傳結果:
4760
			#回傳結果:
4761
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4761
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4762
			#$result["error"],錯誤訊息陣列
4762
			#$result["error"],錯誤訊息陣列
Line 4774... Line 4774...
4774
			#可省略參數:
4774
			#可省略參數:
4775
			#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
4775
			#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
4776
			$conf["allowEmptyStr"]="false";
4776
			$conf["allowEmptyStr"]="false";
4777
			$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
4777
			$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
4778
			unset($conf["stringProcess::spiltString"]);
4778
			unset($conf["stringProcess::spiltString"]);
4779
			
4779
 
4780
			#如果分割gps字串失敗
4780
			#如果分割gps字串失敗
4781
			if($spiltString["status"]==="false"){
4781
			if($spiltString["status"]==="false"){
4782
			
4782
 
4783
				#設置執行失敗
4783
				#設置執行失敗
4784
				$result["status"]="false";
4784
				$result["status"]="false";
4785
			
4785
 
4786
				#設置執行錯誤
4786
				#設置執行錯誤
4787
				$result["error"]=$spiltString;
4787
				$result["error"]=$spiltString;
4788
			
4788
 
4789
				#回傳結果
4789
				#回傳結果
4790
				return $result;
4790
				return $result;
4791
			
4791
 
4792
				}#if end
4792
				}#if end
4793
				
4793
 
4794
			#如果分割gps字串時,沒有發現逗號.
4794
			#如果分割gps字串時,沒有發現逗號.
4795
			if($spiltString["found"]==="false"){
4795
			if($spiltString["found"]==="false"){
4796
			
4796
 
4797
				#設置執行失敗
4797
				#設置執行失敗
4798
				$result["status"]="false";
4798
				$result["status"]="false";
4799
			
4799
 
4800
				#設置執行錯誤
4800
				#設置執行錯誤
4801
				$result["error"]=$spiltString;
4801
				$result["error"]=$spiltString;
4802
			
4802
 
4803
				#回傳結果
4803
				#回傳結果
4804
				return $result;
4804
				return $result;
4805
			
4805
 
4806
				}#if end
4806
				}#if end
4807
				
4807
 
4808
			#如果分割成不等於2段
4808
			#如果分割成不等於2段
4809
			if($spiltString["dataCounts"]!==2){
4809
			if($spiltString["dataCounts"]!==2){
4810
			
4810
 
4811
				#設置執行失敗
4811
				#設置執行失敗
4812
				$result["status"]="false";
4812
				$result["status"]="false";
4813
			
4813
 
4814
				#設置執行錯誤
4814
				#設置執行錯誤
4815
				$result["error"]=$spiltString;
4815
				$result["error"]=$spiltString;
4816
				
4816
 
4817
				#設置錯誤訊息
4817
				#設置錯誤訊息
4818
				$result["error"][]="應該要分割出經度跟緯度";
4818
				$result["error"][]="應該要分割出經度跟緯度";
4819
			
4819
 
4820
				#回傳結果
4820
				#回傳結果
4821
				return $result;
4821
				return $result;
4822
			
4822
 
4823
				}#if end
4823
				}#if end
4824
									
4824
 
4825
			#取得緯度
4825
			#取得緯度
4826
			$lat=$spiltString["dataArray"][0];
4826
			$lat=$spiltString["dataArray"][0];
4827
			
4827
 
4828
			#取得經度
4828
			#取得經度
4829
			$lon=$spiltString["dataArray"][1];
4829
			$lon=$spiltString["dataArray"][1];
4830
			
4830
 
4831
			#檢查經度格式 - start 
4831
			#檢查經度格式 - start
4832
			
4832
 
4833
			#初始化經度檢查未通過
4833
			#初始化經度檢查未通過
4834
			$lonOk=false;
4834
			$lonOk=false;
4835
			
4835
 
4836
			#函式說明:
4836
			#函式說明:
4837
			#將字串特定關鍵字與其前面的內容剔除
4837
			#將字串特定關鍵字與其前面的內容剔除
4838
			#回傳結果:
4838
			#回傳結果:
4839
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4839
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4840
			#$result["error"],錯誤訊息陣列.
4840
			#$result["error"],錯誤訊息陣列.
4841
			#$result["warning"],警告訊息鎮列.
4841
			#$result["warning"],警告訊息鎮列.
4842
			#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4842
			#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4843
			#$result["function"],當前執行的函數名稱.
4843
			#$result["function"],當前執行的函數名稱.
4844
			#$result["oriStr"],要處理的原始字串內容.
4844
			#$result["oriStr"],要處理的原始字串內容.
4845
			#$result["content"],處理好的的字串內容.	
4845
			#$result["content"],處理好的的字串內容.
4846
			#必填參數:
4846
			#必填參數:
4847
			$conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$lon;#要處理的字串.
4847
			$conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$lon;#要處理的字串.
4848
			$conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=".";#特定字串.
4848
			$conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=".";#特定字串.
4849
			$delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
4849
			$delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
4850
			unset($conf["stringProcess::delStrBeforeKeyWord"]);
4850
			unset($conf["stringProcess::delStrBeforeKeyWord"]);
4851
			
4851
 
4852
			#如果分割經度字串失敗
4852
			#如果分割經度字串失敗
4853
			if($delStrBeforeKeyWord["status"]==="false"){
4853
			if($delStrBeforeKeyWord["status"]==="false"){
4854
			
4854
 
4855
				#設置執行失敗
4855
				#設置執行失敗
4856
				$result["status"]="false";
4856
				$result["status"]="false";
4857
			
4857
 
4858
				#設置執行錯誤
4858
				#設置執行錯誤
4859
				$result["error"]=$delStrBeforeKeyWord;
4859
				$result["error"]=$delStrBeforeKeyWord;
4860
			
4860
 
4861
				#回傳結果
4861
				#回傳結果
4862
				return $result;
4862
				return $result;
4863
			
4863
 
4864
				}#if end
4864
				}#if end
4865
				
4865
 
4866
			#如果分割經度字串時,沒有發現dot.
4866
			#如果分割經度字串時,沒有發現dot.
4867
			if($delStrBeforeKeyWord["founded"]==="false"){
4867
			if($delStrBeforeKeyWord["founded"]==="false"){
4868
			
4868
 
4869
				#設置執行失敗
4869
				#設置執行失敗
4870
				$result["status"]="false";
4870
				$result["status"]="false";
4871
			
4871
 
4872
				#設置執行錯誤
4872
				#設置執行錯誤
4873
				$result["error"]=$delStrBeforeKeyWord;
4873
				$result["error"]=$delStrBeforeKeyWord;
4874
			
4874
 
4875
				#回傳結果
4875
				#回傳結果
4876
				return $result;
4876
				return $result;
4877
			
4877
 
4878
				}#if end
4878
				}#if end
4879
				
4879
 
4880
			#如果沒有小數點後七位
4880
			#如果沒有小數點後七位
4881
			if(strlen($delStrBeforeKeyWord["content"])!==7){
4881
			if(strlen($delStrBeforeKeyWord["content"])!==7){
4882
			
4882
 
4883
				#設置執行失敗
4883
				#設置執行失敗
4884
				$result["status"]="false";
4884
				$result["status"]="false";
4885
			
4885
 
4886
				#設置執行錯誤
4886
				#設置執行錯誤
4887
				$result["error"]=$delStrBeforeKeyWord;
4887
				$result["error"]=$delStrBeforeKeyWord;
4888
				
4888
 
4889
				#設置執行錯誤
4889
				#設置執行錯誤
4890
				$result["error"][]="經度應該要包含小數點後7位.";
4890
				$result["error"][]="經度應該要包含小數點後7位.";
4891
			
4891
 
4892
				#回傳結果
4892
				#回傳結果
4893
				return $result;
4893
				return $result;
4894
			
4894
 
4895
				}#if end
4895
				}#if end
4896
				
4896
 
4897
			#如果是西經
4897
			#如果是西經
4898
			if($lon<0){
4898
			if($lon<0){
4899
			
4899
 
4900
				#轉正數加180
4900
				#轉正數加180
4901
				$lon=(-1)*$lon+180;
4901
				$lon=(-1)*$lon+180;
4902
			
4902
 
4903
				}#if end	
4903
				}#if end
4904
				
4904
 
4905
			#如果經度超過範圍
4905
			#如果經度超過範圍
4906
			if($lon>360){
4906
			if($lon>360){
4907
			
4907
 
4908
				#設置執行失敗
4908
				#設置執行失敗
4909
				$result["status"]="false";				
4909
				$result["status"]="false";
4910
				
4910
 
4911
				#設置執行錯誤
4911
				#設置執行錯誤
4912
				$result["error"][]="經度不會大於180度";
4912
				$result["error"][]="經度不會大於180度";
4913
			
4913
 
4914
				#回傳結果
4914
				#回傳結果
4915
				return $result;
4915
				return $result;
4916
			
4916
 
4917
				}#if end
4917
				}#if end
4918
			
4918
 
4919
			#檢查經度格式 - end
4919
			#檢查經度格式 - end
4920
			
4920
 
4921
			#檢查緯度格式 - start 
4921
			#檢查緯度格式 - start
4922
			
4922
 
4923
			#初始化經度檢查未通過
4923
			#初始化經度檢查未通過
4924
			$lonOk=false;
4924
			$lonOk=false;
4925
			
4925
 
4926
			#函式說明:
4926
			#函式說明:
4927
			#將字串特定關鍵字與其前面的內容剔除
4927
			#將字串特定關鍵字與其前面的內容剔除
4928
			#回傳結果:
4928
			#回傳結果:
4929
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4929
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4930
			#$result["error"],錯誤訊息陣列.
4930
			#$result["error"],錯誤訊息陣列.
4931
			#$result["warning"],警告訊息鎮列.
4931
			#$result["warning"],警告訊息鎮列.
4932
			#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4932
			#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4933
			#$result["function"],當前執行的函數名稱.
4933
			#$result["function"],當前執行的函數名稱.
4934
			#$result["oriStr"],要處理的原始字串內容.
4934
			#$result["oriStr"],要處理的原始字串內容.
4935
			#$result["content"],處理好的的字串內容.	
4935
			#$result["content"],處理好的的字串內容.
4936
			#必填參數:
4936
			#必填參數:
4937
			$conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$lat;#要處理的字串.
4937
			$conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$lat;#要處理的字串.
4938
			$conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=".";#特定字串.
4938
			$conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=".";#特定字串.
4939
			$delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
4939
			$delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
4940
			unset($conf["stringProcess::delStrBeforeKeyWord"]);
4940
			unset($conf["stringProcess::delStrBeforeKeyWord"]);
4941
			
4941
 
4942
			#如果分割緯度字串失敗
4942
			#如果分割緯度字串失敗
4943
			if($delStrBeforeKeyWord["status"]==="false"){
4943
			if($delStrBeforeKeyWord["status"]==="false"){
4944
			
4944
 
4945
				#設置執行失敗
4945
				#設置執行失敗
4946
				$result["status"]="false";
4946
				$result["status"]="false";
4947
			
4947
 
4948
				#設置執行錯誤
4948
				#設置執行錯誤
4949
				$result["error"]=$delStrBeforeKeyWord;
4949
				$result["error"]=$delStrBeforeKeyWord;
4950
			
4950
 
4951
				#回傳結果
4951
				#回傳結果
4952
				return $result;
4952
				return $result;
4953
			
4953
 
4954
				}#if end
4954
				}#if end
4955
				
4955
 
4956
			#如果分割緯度字串時,沒有發現dot.
4956
			#如果分割緯度字串時,沒有發現dot.
4957
			if($delStrBeforeKeyWord["founded"]==="false"){
4957
			if($delStrBeforeKeyWord["founded"]==="false"){
4958
			
4958
 
4959
				#設置執行失敗
4959
				#設置執行失敗
4960
				$result["status"]="false";
4960
				$result["status"]="false";
4961
			
4961
 
4962
				#設置執行錯誤
4962
				#設置執行錯誤
4963
				$result["error"]=$delStrBeforeKeyWord;
4963
				$result["error"]=$delStrBeforeKeyWord;
4964
			
4964
 
4965
				#回傳結果
4965
				#回傳結果
4966
				return $result;
4966
				return $result;
4967
			
4967
 
4968
				}#if end
4968
				}#if end
4969
				
4969
 
4970
			#如果沒有小數點後七位
4970
			#如果沒有小數點後七位
4971
			if(strlen($delStrBeforeKeyWord["content"])!==7){
4971
			if(strlen($delStrBeforeKeyWord["content"])!==7){
4972
			
4972
 
4973
				#設置執行失敗
4973
				#設置執行失敗
4974
				$result["status"]="false";
4974
				$result["status"]="false";
4975
			
4975
 
4976
				#設置執行錯誤
4976
				#設置執行錯誤
4977
				$result["error"]=$delStrBeforeKeyWord;
4977
				$result["error"]=$delStrBeforeKeyWord;
4978
				
4978
 
4979
				#設置執行錯誤
4979
				#設置執行錯誤
4980
				$result["error"][]="緯度應該要包含小數點後7位.";
4980
				$result["error"][]="緯度應該要包含小數點後7位.";
4981
			
4981
 
4982
				#回傳結果
4982
				#回傳結果
4983
				return $result;
4983
				return $result;
4984
			
4984
 
4985
				}#if end
4985
				}#if end
4986
				
4986
 
4987
			#如果是南緯
4987
			#如果是南緯
4988
			if($lat<0){
4988
			if($lat<0){
4989
			
4989
 
4990
				#轉正數加180
4990
				#轉正數加180
4991
				$lat=(-1)*$lat+90;
4991
				$lat=(-1)*$lat+90;
4992
							
4992
 
4993
				}#if end	
4993
				}#if end
4994
				
4994
 
4995
			#如果緯度超過範圍
4995
			#如果緯度超過範圍
4996
			if($lat>180){
4996
			if($lat>180){
4997
			
4997
 
4998
				#設置執行失敗
4998
				#設置執行失敗
4999
				$result["status"]="false";				
4999
				$result["status"]="false";
5000
				
5000
 
5001
				#設置執行錯誤
5001
				#設置執行錯誤
5002
				$result["error"][]="緯度不會大於90度";
5002
				$result["error"][]="緯度不會大於90度";
5003
			
5003
 
5004
				#回傳結果
5004
				#回傳結果
5005
				return $result;
5005
				return $result;
5006
			
5006
 
5007
				}#if end
5007
				}#if end
5008
			
5008
 
5009
			#檢查緯度格式 - end
5009
			#檢查緯度格式 - end
5010
			
5010
 
5011
			#取得16進位的緯度
5011
			#取得16進位的緯度
5012
			$lat=sprintf("%08s",strtoupper(base_convert($lat*pow(10,7),10,16)));
5012
			$lat=sprintf("%08s",strtoupper(base_convert($lat*pow(10,7),10,16)));
5013
			
5013
 
5014
			#取得16進位的經度
5014
			#取得16進位的經度
5015
			$lon=sprintf("%08s",strtoupper(base_convert($lon*pow(10,7),10,16)));
5015
			$lon=sprintf("%08s",strtoupper(base_convert($lon*pow(10,7),10,16)));
5016
			
5016
 
5017
			#設置要回傳的16進位16位數字的經緯度
5017
			#設置要回傳的16進位16位數字的經緯度
5018
			$result["content"]=$lat.$lon;
5018
			$result["content"]=$lat.$lon;
5019
			
5019
 
5020
			#設置執行正常
5020
			#設置執行正常
5021
			$result["status"]="true";
5021
			$result["status"]="true";
5022
			
5022
 
5023
			#回傳結果
5023
			#回傳結果
5024
			return $result;
5024
			return $result;
5025
		
5025
 
5026
		}#if end
5026
		}#if end
5027
		
5027
 
5028
		#取得16進位緯度
5028
		#取得16進位緯度
5029
		$lat=substr($conf["rawGps"],0,8);
5029
		$lat=substr($conf["rawGps"],0,8);
5030
		
5030
 
5031
		#取得16進位經度
5031
		#取得16進位經度
5032
		$lon=substr($conf["rawGps"],8,8);
5032
		$lon=substr($conf["rawGps"],8,8);
5033
		
5033
 
5034
		#取得10進位的經度
5034
		#取得10進位的經度
5035
		$lon=base_convert($lon,16,10);
5035
		$lon=base_convert($lon,16,10);
5036
		
5036
 
5037
		#取得10進位的緯度
5037
		#取得10進位的緯度
5038
		$lat=base_convert($lat,16,10);
5038
		$lat=base_convert($lat,16,10);
5039
		
5039
 
5040
		#如果經度超過範圍
5040
		#如果經度超過範圍
5041
		if($lon>2*180*pow(10,7))
5041
		if($lon>2*180*pow(10,7))
5042
		{
5042
		{
5043
			#設置錯誤訊息
5043
			#設置錯誤訊息
5044
			$result["error"][]="經度超過範圍";
5044
			$result["error"][]="經度超過範圍";
5045
			
5045
 
5046
			#設置錯誤
5046
			#設置錯誤
5047
			$result["status"]="false";
5047
			$result["status"]="false";
5048
			
5048
 
5049
			#回傳結果
5049
			#回傳結果
5050
			return $result;
5050
			return $result;
5051
			
5051
 
5052
		}#if end
5052
		}#if end
5053
		
5053
 
5054
		#如果緯度超過範圍
5054
		#如果緯度超過範圍
5055
		if($lat>2*90*pow(10,7))
5055
		if($lat>2*90*pow(10,7))
5056
		{
5056
		{
5057
			#設置錯誤訊息
5057
			#設置錯誤訊息
5058
			$result["error"][]="緯度超過範圍";
5058
			$result["error"][]="緯度超過範圍";
5059
			
5059
 
5060
			#設置錯誤
5060
			#設置錯誤
5061
			$result["status"]="false";
5061
			$result["status"]="false";
5062
			
5062
 
5063
			#回傳結果
5063
			#回傳結果
5064
			return $result;
5064
			return $result;
5065
			
5065
 
5066
		}#if end
5066
		}#if end
5067
			
5067
 
5068
		#如果是西經
5068
		#如果是西經
5069
		if($lon>180*pow(10,7))
5069
		if($lon>180*pow(10,7))
5070
		{
5070
		{
5071
			$lon=-($lon-180*pow(10,7));
5071
			$lon=-($lon-180*pow(10,7));
5072
		
5072
 
5073
		}#if end
5073
		}#if end
5074
				
5074
 
5075
		#如果是南緯
5075
		#如果是南緯
5076
		if($lat>90*pow(10,7))
5076
		if($lat>90*pow(10,7))
5077
		{
5077
		{
5078
			$lat=-($lat-90*pow(10,7));
5078
			$lat=-($lat-90*pow(10,7));
5079
		
5079
 
5080
		}#if end
5080
		}#if end
5081
			
5081
 
5082
		#設置要回傳的結果
5082
		#設置要回傳的結果
5083
		$result["content"]=$lat*pow(10,-7).",".$lon*pow(10,-7);
5083
		$result["content"]=$lat*pow(10,-7).",".$lon*pow(10,-7);
5084
		
5084
 
5085
		#設置執行正常
5085
		#設置執行正常
5086
		$result["status"]="true";
5086
		$result["status"]="true";
5087
		
5087
 
5088
		#回傳結果
5088
		#回傳結果
5089
		return $result;
5089
		return $result;
5090
		
5090
 
5091
		}#function raw2gps
5091
		}#function raw2gps
5092
 
5092
 
5093
	}#class math end
5093
	}#class math end
5094
 
5094
 
5095
?>
5095
?>