首先說明一些這個函數的應用場景,比如說你得到的數據是個二維數組,里面的很多成員其實是不必要的,比如說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就可以了。