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语言基础--二维数组
二维数组概念: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组,二维数组是特殊的一维数组. 二维数组格式: 元素类型 数组名称[一维数组的个数][每个一维数组的元素个数]; 元素类型 ...
随机推荐
- 20145330《Java程序设计》第四周学习总结
20145330<Java程序设计>第四周学习总结 一周两章新知识的自学与理解真的是很考验和锻炼我们,也对前面几章我们的学习进行了检测,遇到忘记和不懂的知识就再复习前面的,如此巩固也让我对 ...
- POI Word 模板 文字 图片 替换
实验环境:POI3.7+Word2007 Word模板: 替换后效果: 代码: 1.入口文件 public class Test { public static void main(String[] ...
- 全浏览器收藏网站javascript
function MyFavorite(sURL, sTitle) { var ctrl = (navigator.userAgent.toLowerCase()).indexOf('mac') != ...
- Map 映射
package lis0924; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import j ...
- C++ 单元测试 Cpputest
参见:http://cpputest.github.io/ 1. CppUTest是一个C/C++单元测试框架,可以在C/C++项目中使命. 2. 第一个测试 新建一个cpp 文件,包含一个TEST_ ...
- HDU1134/HDU1133 递推 大数 java
Game of Connections Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- Daily Scrum 10.31
今天是万圣节,也是编译课程设计第一次作业截至的日子,但由于大家对时间的合理安排,我们还是完成了一定的任务量. 下面是今天的Task统计: 不仅燃尽图和燃速图出不来,连那个所有迭代状态的图也出不来了.. ...
- array_reduce方法用回调函数迭代地将对数组的值进行操作
在处理php数组的时候,有一种需求特别的频繁,如下二维数组: $arr = array( 1=>array( 'id' => 5, 'name' => '张三' ), 2=>a ...
- Python打包成exe程序
如何把.py文件打包成.exe可执行程序. 这里选择用PyInstaller 3.0来打包,PyInstaller 3.0下载地址:https://pypi.python.org/pypi/PyIns ...
- 基于 ThinkPHP 3.2.3 的页面静态化功能的实现
PHP 的页面静态化有多种实现方式,比如使用输出缓冲(output buffering),该种方式是把数据缓存在 PHP 的缓冲区(内存)中,下一次取数据时直接从缓冲区中读取数据,从而避免了脚本的编译 ...