首先说明一些这个函数的应用场景,比如说你得到的数据是个二维数组,里面的很多成员其实是不必要的,比如说api调用后不必要给别人返回一些用不到的垃圾数据吧,如下是代码。
<?php /* * delMemberGetNewArray 得到一个新二维数组 * @ $data 原始数组 * @ $del_data mixd 传入的改变因子 * @ $flag bool 为false就是原始数组删除包含因子的成员,true就是提取包含因子的成员 */ function delMemberGetNewArray(array $data,array $del_data,$flag=false) { if(!$data) return false; if(!$del_data) return false; $flag_array = array(false,true); if (!in_array($flag, $flag_array )) { return false; } $new_data = array(); $count = sizeof($del_data); $org_count = sizeof($data[0]); if($count >= $org_count) return false;#如果del_data的个数大于或等于数组,返回false foreach($data as $key => $value) { #提取制定成员操作 if($flag){ #提取单个成员操作 if(count($del_data) == 1){ if(array_key_exists($del_data[0],$value)) { $new_data[$key][$del_data[0]] = $value[$del_data[0]]; if ($count == count($data)-1) { return $new_data; } }else{ return false; } }else{ #提取多个成员 $keys = array_keys($value); $new_array = array_diff($keys,$del_data); if (count($new_array) == 1) { $extra_key = $new_array[key($new_array)]; unset($value[$extra_key]); $new_data[] = $value; }else{ } if($key == count($data)-1) { return $new_data; } } }else{ #传入数组删除操作 foreach($del_data as $del_value) { unset($value[$del_value]); } #传入单个变量删除操作 $new_data[$key]= $value; } } return $new_data; }
其中,$del_data可以是变量也可以是数组,可以灵活使用$flag这个参数,比如二维数组的数据很多,你只想提取你想要的数据,这时你就可以把你想提取的数据(二维数组成员键名)写为一个一位数组,例如$del_data=('name','age'),传入函数并设置为ture,就会生成一个只包含传入数组的新二维数组,如果二维数组的数据你只有一个不想要,就可以传入一个想删除的成员(二维数组成员键名),并设置为false就可以了。