先来看下面这段代码:当$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{
/***代码段***/
}
}
}
使用上面这种方式,可以避免不必要的资源被浪费。