70 行
2.0 KiB
PHP
可执行文件
70 行
2.0 KiB
PHP
可执行文件
<?php
|
|
//[1.8.20]
|
|
/*
|
|
* Author: ocean
|
|
* Date: 2016-09-20
|
|
*/
|
|
|
|
/*
|
|
* get_new_array 得到一个新二维数组
|
|
* @ $data 原始数组
|
|
* @ $del_data mixd 传入的改变因子
|
|
* @ $flag bool 为false就是原始数组删除包含因子的成员,true就是提取包含因子的成员
|
|
*/
|
|
function get_new_array(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;
|
|
}
|
|
|