PHP二维数组提取函数----把不需要的数据剔除

  首先说明一些这个函数的应用场景,比如说你得到的数据是个二维数组,里面的很多成员其实是不必要的,比如说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就可以了。

posted @ 2016-03-20 00:29  夕默  阅读(4062)  评论(0编辑  收藏  举报