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就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM