1. 程式人生 > >記使用陣列做快取的方法

記使用陣列做快取的方法

先來看下面這段程式碼:當$value['userid']的值存在大量的相同值的話,每次迴圈 new Class_A 會造成資源浪費,$arr 中的資料少的話還不太明顯,若資料量大的話,每次迴圈都建立物件,就會十分浪費資源了。
(當然資料量過多,最好不要使用陣列去儲存,在此只是做一個示例)


foreach ($arr as $value) {
	if($value){
		//初始化引數
		$a = null;
		$user_info = array();

		$a = new Class_A($value['userid']);
		$user_info = $a->getUserInfo();

		if($user_info['name'] == 'test'){
			/***程式碼段***/
		}else{
			/***程式碼段***/
		}
	}
}

在$arr中,當 $value['userid'] 的值有重複,且用到$value['userid']的這段程式碼比較耗費資源的時候,可以用一個數組來做快取,避免資源的浪費。程式碼如下:

$userid = array();
foreach ($arr as $value) {
	if($value){
		//初始化引數
		$a = null;
		$user_info = array();

		if($userid[$value['userid']]){
			$user_info['name'] = 'test';
		}else{
			//比較消耗資源的一段程式碼
			$a = new Class_A($value['userid']);
			$user_info = $a->getUserInfo();
		}

		if($user_info['name'] == 'test'){
			//$value['userid']作為key的值,存入$userid陣列中
			$userid[$value['userid']] = 1;
			/***程式碼段***/
		}else{
			/***程式碼段***/
		}
	}
}

使用上面這種方式,可以避免不必要的資源被浪費。