php 二维数组去除一项,PHP二维数组提取函数----把不需要的数据剔除

首先说明一些这个函数的应用场景,比如说你得到的数据是个二维数组,里面的很多成员其实是不必要的,比如说api调用后不必要给别人返回一些用不到的垃圾数据吧,如下是代码。

/*

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

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

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

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

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

C-指针&comma;二级指针&comma;二维数组作为函数参数使用&comma;C语言链表&lpar;详解&rpar;

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

C语言学习笔记 &lpar;005&rpar; - 二维数组作为函数参数传递剖析

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

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} ...

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

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

C&sol;C&plus;&plus;二维数组的用法

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

C语言基础--二维数组

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

随机推荐

RocketMQ原理解析-Remoting

Remoting2. 通信层底层传输协议 RocketMq服务器与客户端通过传递RemotingCommand来交互,通过NettyDecoder,对RemotingCommand进行协议的编码与解码 ...

SQLAlchemy ORM之建表与查询

作了最基本的操作,找找感觉.. #coding=utf-8 from datetime import datetime from sqlalchemy import (MetaData, Table, ...

20151225jquery学习笔记---折叠菜单UI

折叠菜单(accordion),和选项卡一样也是一种在同一个页面上切换不同内容的功能UI.它和选项卡的使用几乎没有什么太大区别,只是显示的效果有所差异罢了.一. 使用 accordion使用 acco ...

android的二进制和十六进制的相互转换工具类&lpar;一&rpar;&colon;

二进制和十六进制的相互转换工具类: package com.gzcivil.utils; public class BinStr { /** * 将二进制转换成16进制 * @param buf * ...

JMeter入门(01)概念和样例

一.概念 JMeter 是一款专门用于功能测试和压力测试的轻量级测试开发平台,实现了许多和互联网相关的网络测试组件,同时还保留着很强的扩展性. JMeter可以用来测试诸如:静态文件,Java Ser ...

Linux常用基本命令&lpar; rmdir&comma; rm&comma; mv &rpar;

1,rmdir,一个很鸡肋的命令,只能删除空目录 ghostwu@dev:~/linux/cp$ ls .txt .txt a a2 a3 ghostwu@dev:~/linux/cp$ rmdir ...

1349&colon; Taking Pebbles (博弈 打表找规律)

1349: Taking Pebbles Submit Page    Summary    Time Limit: 1 Sec     Memory Limit: 128 Mb     Submit ...

Spring&lpar;2&rpar;&colon;Spring Ioc

1.下载spring-framework-3.2.0 完整包下载路径: https://repo.spring.io/webapp/#/artifacts/browse/tree/Properties ...

boost exception jam0&period;exe 异常错误

在Windows 8 64 bit下执行boost_1_53_0的bootstrap.bat出现了jam0.exe执行错误 搜索网页发现需要修改两处文件: tools/build/v2/engine/ ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值