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

PHP二维数组提取函数----把不需要的数据剔除的更多相关文章

  1. C语言中如何将二维数组作为函数的参数传递

    今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...

  2. C语言二维数组作为函数的参数

    前言:今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数.在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示.我写程序的错误如下程序所示: #include < ...

  3. C-指针,二级指针,二维数组作为函数参数使用,C语言链表(详解)

    一级指针 int *p;            //表示定义一个int型(4字节)的指针p &p                 //表示p自身的地址位置 p                  ...

  4. C语言学习笔记 (005) - 二维数组作为函数参数传递剖析

    前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...} / ...

  5. C语言二维数组作为函数参数

    设有整型二维数组a[3][4]如下:0   1   2   34   5   6   78   9  10  11 它的定义为:    int a[3][4]={{0,1,2,3},{4,5,6,7} ...

  6. C语言中将二维数组作为函数参数来传递

    c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h> void func(int n, char ...

  7. ***php解析JSON二维数组字符串(json_decode函数第二个参数True和False的区别)

    客户端的请求体中的数据:[{"msg_id": 1, "msg_status": "HAS_READ" }, { "msg_id& ...

  8. C/C++二维数组的用法

    二维数组在存储时按行优先连续存储,数组名是一个二维指针,如 int a[3][2] 中,a 是一个二维指针,而a[0],a[1],a[2]都相当于普通的一位数组的数组名,是一个固定值的指针. 二维数组 ...

  9. C语言基础--二维数组

    二维数组概念: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组,二维数组是特殊的一维数组. 二维数组格式: 元素类型 数组名称[一维数组的个数][每个一维数组的元素个数]; 元素类型 ...

随机推荐

  1. UWP ComboBox下拉选项滚动循环问题

    在UWP开发中遇到个小问题,ComboBox的Item太多的话,列表会重复,并且无限循环,Google了一下后发现这貌似是Metro应用的老问题了,由于ComboBox的Items使用的是Carous ...

  2. JS手机访问PC端网站自动跳转到手机端网站

    <script type="text/javascript"> //移动端url跳转,自定义部分开始 function mobile_device_detect(url ...

  3. Android事件处理

    含义:为用户动作提供响应就是事件处理. Android提供了强大的事件处理机制:基于监听的事件处理.基于回调的事件处理. 一.基于监听的事件处理 监听的处理模型主要涉及三类对象 >Event S ...

  4. zend studion实现自动换行

    真是学一门语言不仅有学语言的阻碍,同时还有编写代码工具的障碍,zend studion的自动换行问题 zend studion默认的是不会自己换行,百度查找后找到了如下个方法: 实现: 菜单" ...

  5. [LintCode] Restore IP Address 复原IP地址

    Given a string containing only digits, restore it by returning all possible valid IP address combina ...

  6. Hadoop.2.x_高级应用_二次排序及MapReduce端join

    一.对于二次排序案例部分理解 1. 分析需求(首先对第一个字段排序,然后在对第二个字段排序) 杂乱的原始数据 排序完成的数据 a,1 a,1 b,1 a,2 a,2 [排序] a,100 b,6 == ...

  7. thinkphp框架3.2的cookie删除问题记录

    在使用框架删除cookie时,发现cookie(null)不起作用.后来查看官网相关信息,看到了讨论http://www.thinkphp.cn/bug/2602.html

  8. bzoj2743: [HEOI2012]采花--离线树状数组+差分

    题目大意:给定一个区间,查询子区间里出现次数不小于二的数的个数 此题想了好久没想出来,后来是在网上学习的一个方法 首先按查询区间的右端点进行排序,按右端点从小到大处理 假设pre[a[i]]是与a[i ...

  9. iOS no visible @interface for 'UIButton' declares the selector errors

    no visible @interface for 'UIButton' declares the selector errors  原理不是特别理解,通过清理缓存,代码更新了,Xcode还是读旧的缓 ...

  10. Exception在方法继承中的限制

    问题: 父类或接口中定义了方法应该抛出的异常,那么当子类重写方法时应该怎样定义将要抛出的异常: 首先定义异常和父类: class Exception1 extends Exception {} cla ...