Subversion Repositories php-qbpwcf

Rev

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

Rev 167 Rev 190
Line 100... Line 100...
100
	#多層if判斷.
100
	#多層if判斷.
101
	#回傳結果:
101
	#回傳結果:
102
	#$result["status"],字串,"true"代表執行正常;"false"代表執行異常.
102
	#$result["status"],字串,"true"代表執行正常;"false"代表執行異常.
103
	#$result["function"],當前函式的名稱.
103
	#$result["function"],當前函式的名稱.
104
	#$result["pass"],字串,"true"代表通過多層if判斷;反之為"false".
104
	#$result["pass"],字串,"true"代表通過多層if判斷;反之為"false".
-
 
105
	#$result["reason"]["varLeftName"],當$result["pass"]為"false"時,會回傳用於判斷的varLeft名稱資訊.
-
 
106
	#$result["reason"]["varLeftVal"],當$result["pass"]為"false"且對應變數存在時,會回傳用於判斷的varLeft數值資訊.
-
 
107
	#$result["reason"]["condition"],當$result["pass"]為"false"且對應變數存在時,會回傳用於判斷的condition資訊.
-
 
108
	#$result["reason"]["varRightVal"],當$result["pass"]為"false"且對應變數存在時,會回傳用於判斷的varRight數值資訊.
105
	#必填參數:
109
	#必填參數:
106
	#$conf["get_defined_vars"],陣列,所有已經定義的變數.
110
	#$conf["get_defined_vars"],陣列,所有已經定義的變數.
107
	$conf["get_defined_vars"]=get_defined_vars();
111
	$conf["get_defined_vars"]=get_defined_vars();
108
	#$conf["varToControlLeft"],字串陣列,依照順序每層要做判斷的變數名稱,例如"$var1"請寫成"var1".
112
	#$conf["varToControlLeft"],字串陣列,依照順序每層要做判斷的變數名稱,例如"$var1"請寫成"var1";若為$array2["key2"]則請寫成"array("array2","key2")"
109
	$conf["varToControlLeft"]=array();
113
	$conf["varToControlLeft"]=array();
110
	#$conf["conditions"],字串陣列,依照順序每層變數判斷的條件,例如">","<",">=","<=","!=","==","<==","!==","===".
114
	#$conf["conditions"],字串陣列,依照順序每層變數判斷的條件,例如">","<",">=","<=","!=","==","<==","!==","===".
111
	$conf["conditions"]=array();
115
	$conf["conditions"]=array();
112
	#$conf["varToControlRight"],陣列,依照順序每層變數判斷期望的結果.
116
	#$conf["varToControlRight"],陣列,依照順序每層變數判斷期望的結果.
113
	$conf["varToControlRight"]=array();
117
	$conf["varToControlRight"]=array();
Line 250... Line 254...
250
		
254
		
251
		#預設通過判斷的識別
255
		#預設通過判斷的識別
252
		$result["pass"]="true";
256
		$result["pass"]="true";
253
		
257
		
254
		#針對每個要判斷的變數
258
		#針對每個要判斷的變數
255
		foreach($conf["varToControlLeft"] as $index => $varLeft){
259
		foreach($conf["varToControlLeft"] as $index => $varLeftName){
256
		
260
		
257
			#如果要判斷的變數不存在
261
			#判斷為字串或陣列
258
			if(!isset($conf["get_defined_vars"][$varLeft])){
262
			switch(gettype($varLeftName)){
259
			
263
			
260
				#設置不通過的識別
264
				#如果是字串
261
				$result["pass"]="false";
265
				case "string":
262
			
266
			
-
 
267
					#如果要判斷的變數不存在
-
 
268
					if(!isset($conf["get_defined_vars"][$varLeftName])){
-
 
269
					
-
 
270
						#設置不通過的識別
-
 
271
						$result["pass"]="false";
-
 
272
						
-
 
273
						#記錄用於判斷的varLeft變數名稱
-
 
274
						$result["reason"]["varLeftName"]=$varLeftName;
-
 
275
						
263
				#結束 foreach
276
						#結束 foreach
-
 
277
						break 2;
-
 
278
					
-
 
279
						}#if end
-
 
280
						
-
 
281
					#記錄用於判斷的varLeft變數數值
-
 
282
					$varLeftVal=&$conf["get_defined_vars"][$varLeftName];
-
 
283
			
-
 
284
					#跳出 switch
-
 
285
					break;
-
 
286
					
-
 
287
				#如果是array
-
 
288
				case "array":
-
 
289
				
-
 
290
					#初始化儲存 $varToControlLeft 父元素的變數
-
 
291
					$parentVarOfVarLeft=$conf["get_defined_vars"];
-
 
292
				
-
 
293
					#針對每個元素
-
 
294
					foreach($varLeftName as $key){
-
 
295
						
-
 
296
						#如果要判斷的變數不存在
-
 
297
						if(!isset($parentVarOfVarLeft[$key])){
-
 
298
						
-
 
299
							#設置不通過的識別
-
 
300
							$result["pass"]="false";
-
 
301
						
-
 
302
							#記錄用於判斷的varLeft變數名稱
-
 
303
							$result["reason"]["varLeftName"]=$varLeftName;
-
 
304
						
-
 
305
							#結束 foreach
-
 
306
							break 3;
-
 
307
						
-
 
308
							}#if end
-
 
309
					
-
 
310
						#執行到這代表存在
-
 
311
					
-
 
312
						#更新 $varToControlLeft 父元素的變數
-
 
313
						$parentVarOfVarLeft=$parentVarOfVarLeft[$key];
-
 
314
					
-
 
315
						}#foreach end
-
 
316
						
-
 
317
					#記錄用於判斷的varLeft變數數值
-
 
318
					$varLeftVal=&$parentVarOfVarLeft;
-
 
319
				
-
 
320
					#跳出switch
264
				break;
321
					break;
-
 
322
					
-
 
323
				#如果是其他結果
-
 
324
				default:
-
 
325
				
-
 
326
					#設置執行異常
-
 
327
					$result["status"]="false";
-
 
328
					
-
 
329
					#設置執行錯誤
-
 
330
					$result["error"][]="element of param varToControlLeft should be string or array";
-
 
331
					
-
 
332
					#設置執行錯誤
-
 
333
					$result["error"][]=$checkArguments;
-
 
334
					
-
 
335
					#回傳結果
-
 
336
					return $result;
265
			
337
			
266
				}#if end
338
				}#switch end
267
		
-
 
268
			#要判斷的變數
-
 
269
			$varLeft=&$conf["get_defined_vars"][$varLeft];
-
 
270
			
339
			
271
			#判斷條件
340
			#判斷條件
272
			$condition=$conf["conditions"][$index];
341
			$condition=$conf["conditions"][$index];
273
			
342
			
274
			#判斷預期的結果
343
			#記錄用於判斷的varRight變數名稱
275
			$varRight=&$conf["varToControlRight"][$index];
344
			$varRightVal=&$conf["varToControlRight"][$index];
276
			
345
			
277
			#如果不滿足條件
346
			#儲存要給eval運行的內容
278
			if(!(eval("return ".$varLeft.$condition.$varRight.";"))){
347
			$evalStr="return \$varLeftVal".$condition."\$varRightVal;";
-
 
348
			
-
 
349
			#debug
-
 
350
			#var_dump(__LINE__,$evalStr);
279
			
351
			
-
 
352
			#如果不滿足條件
-
 
353
			if(!(eval($evalStr))){
-
 
354
				
280
				#設置不通過的識別
355
				#設置不通過的識別
281
				$result["pass"]="false";
356
				$result["pass"]="false";
282
			
357
				
-
 
358
				#記錄用於判斷的varLeft變數名稱
-
 
359
				$result["reason"]["varLeftName"]=$varLeftName;
-
 
360
				
-
 
361
				#記錄用於判斷的varLeft變數數值
-
 
362
				$result["reason"]["varLeftVal"]=$varLeftVal;
-
 
363
				
-
 
364
				#記錄用於判斷的varRight資訊
-
 
365
				$result["reason"]["varRightVal"]=$varRightVal;
-
 
366
				
-
 
367
				#記錄用於判斷的condition資訊
-
 
368
				$result["reason"]["condition"]=$condition;
-
 
369
				
283
				#結束 foreach
370
				#結束 foreach
284
				break;
371
				break;
285
			
372
			
286
				}#if end
373
				}#if end
287
		
374