标签:
最近做APP接口的时候发现,在服务器返回给APP的接口数据很多都是二维数组的形式,但是这就带来了一些问题,有一些数据是没有用的,这些没有用的数据会给APP方面造成麻烦,于是搜索解决办法发现网上和手册都没有能解决这个问题的函数,于是自己写了一个函数delMemberGetNewArray,可以把二维数组多余的数据给剔除掉,对于以后我们处理数据方面提供了便利,看代码
1 /* 2 * delMemberGetNewArray 得到一个新二维数组 3 * @ $data 原始数组 4 * @ $del_data var array 传入的改变因子 5 * @ $flag bool 为false就是原始数组删除包含因子的成员,true就是提取包含因子的成员 6 */ 7 function delMemberGetNewArray($data,$del_data=null,$flag=false) 8 { 9 if(is_null($del_data)) return false; 10 $count = sizeof($del_data); 11 $new_data = array(); 12 $org_count = sizeof($data[0]); 13 if($org_count == $count) return false; 14 foreach($data as $key => $value) 15 { 16 #提取制定成员操作 17 if($flag == ‘true‘){ 18 if(!is_array($del_data)){ 19 #提取单个成员操作 20 foreach($value as $k=>$v){ 21 if($k == $del_data){ 22 continue; 23 }else{ 24 unset($value[$k]); 25 } 26 } 27 }else{ 28 foreach($value as $k=>$v){ 29 foreach($del_data as $del_key=>$del_value){ 30 if($k == $del_value){ 31 continue; 32 }else{ 33 if(!in_array($k,$del_data)) 34 { 35 unset($value[$k]); 36 } 37 } 38 } 39 } 40 } 41 $new_data[$key]= $value; 42 }else{ 43 //传入数组删除操作 44 if(is_array($del_data)) 45 { 46 foreach($del_data as $del_value) 47 { 48 unset($value[$del_value]); 49 } 50 //传入单个变量删除操作 51 }else{ 52 unset($value[$del_data]); 53 } 54 $new_data[$key]= $value; 55 } 56 } 57 return $new_data; 58 }
其中,$del_data可以是变量也可以是数组,可以灵活使用$flag这个参数,比如二维数组的数据很多,你只想提取你想要的数据,这时你就可以把你想提取的数据(二维数组成员键名)写为一个一位数组,例如$del_data=(‘name‘,‘age‘),传入函数并设置为ture,就会生成一个只包含传入数组的新二维数组,如果二维数组的数据你只有一个不想要,就可以传入一个想删除的成员(二维数组成员键名),并设置为false就可以了。
标签:
原文地址:http://www.cnblogs.com/ximotao/p/5296967.html