zoukankan      html  css  js  c++  java
  • 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就可以了。

  • 相关阅读:
    jmeter学习笔记(二)
    jmeter学习笔记(一)
    让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
    Fiddler抓包
    76. 最小覆盖子串
    Map中getOrDefault()与数值进行比较
    阻塞非阻塞与同步异步的区别
    81. 搜索旋转排序数组 II
    49. 字母异位词分组
    48. 旋转图像
  • 原文地址:https://www.cnblogs.com/ximotao/p/5296967.html
Copyright © 2011-2022 走看看