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就可以了。
PHP二维数组提取函数----把不需要的数据剔除的更多相关文章
- C语言中如何将二维数组作为函数的参数传递
今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...
- C语言二维数组作为函数的参数
前言:今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数.在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示.我写程序的错误如下程序所示: #include < ...
- C-指针,二级指针,二维数组作为函数参数使用,C语言链表(详解)
一级指针 int *p; //表示定义一个int型(4字节)的指针p &p //表示p自身的地址位置 p ...
- C语言学习笔记 (005) - 二维数组作为函数参数传递剖析
前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个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 <stdio.h> void func(int n, char ...
- ***php解析JSON二维数组字符串(json_decode函数第二个参数True和False的区别)
客户端的请求体中的数据:[{"msg_id": 1, "msg_status": "HAS_READ" }, { "msg_id& ...
- C/C++二维数组的用法
二维数组在存储时按行优先连续存储,数组名是一个二维指针,如 int a[3][2] 中,a 是一个二维指针,而a[0],a[1],a[2]都相当于普通的一位数组的数组名,是一个固定值的指针. 二维数组 ...
- C语言基础--二维数组
二维数组概念: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组,二维数组是特殊的一维数组. 二维数组格式: 元素类型 数组名称[一维数组的个数][每个一维数组的元素个数]; 元素类型 ...
随机推荐
- JavaScript事件对象【转】
一. 事件对象 事件处理三部分组成:对象.事件处理函数=函数.例如:单击文档任意处. 1.鼠标按钮 非 IE(W3C)中的 button 属性 0 表示主鼠标按钮(常规一般是鼠标左键) 1 表示中间的 ...
- C#常用方法集合
public class Utility:Page { #region 数据转换 /// <summary> /// 返回对象obj的String值,obj为null时返回空值. /// ...
- [LintCode] 3Sum 三数之和
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...
- intellij idea 插件 ideaVim
像Eclipse一样,idea这个公认最好的javaIDE也有Vim插件. 安装方法 File>Settings>Plugins>Install JetBrains plugin.. ...
- php 将查询出的数组数据存入redis
我们从数据库查询出来的数据一般为数组的形式, 而redis是不支持存入数组的, 一种解决办法是将数组转化为json数据,再将json存入redis,之后取出时再将json转化为php数组. 但将取出的 ...
- js变量
由于undefined和null两个值的比较是相等的,所以,未初始化的变量和赋值为null的变量会相等.这时,可以采用typeof变量的类型进行比较.但,建议还是养成编码的规范,不要忘记初始化变量. ...
- Week1 学长的经验教训
我手头拿到的是上一届学长的软件工程大作业,作业的名称是——汽车4S店信息管理系统. 这个大作业我认为还是非常典型的传统模式的大作业,由手机端(客户端)和服务端组成,非常的传统. ...
- CSS3初学篇章_2(伪类选择符)
id与class选择符 id与class选择符都是自定义标签名字的选择符,但id是唯一的,class却可重复使用. id选择符以"#"定义 class选择符以".&quo ...
- Rocky4.2下安装金仓v7数据库(KingbaseES)
1.准备操作系统 1.1 系统登录界面 1.2 操作系统版本信息 jdbh:~ # uname -ra Linux jdbh -x86_64 # SMP Fri Dec :: CST x86_64 G ...
- 【转】Unity中的协同程序-使用Promise进行封装(三)
原文:http://gad.qq.com/program/translateview/7170967 译者:崔国军(飞扬971) 审校:王磊(未来的未来) 在这个系列的最后一部分文章,我们要通过 ...