PHP之提取多维数组指定列的方法

 前言:有时候在开发中会遇到这样的问题,我们需要把有规律的多维数组按照纵向(列)取出,有下面的方法可用:

我们将拿下面的数组来处理:

1 $arr = array(
2     ‘0‘ => array(‘id‘ => 1, ‘name‘ => ‘name1‘),
3     ‘1‘ => array(‘id‘ => 2, ‘name‘ => ‘name2‘),
4     ‘2‘ => array(‘id‘ => 3, ‘name‘ => ‘name3‘),
5     ‘3‘ => array(‘id‘ => 4, ‘name‘ => ‘name4‘),
6     ‘4‘ => array(‘id‘ => 5, ‘name‘ => ‘name5‘),
7 );

//需要得到的结果:$name_list = array(‘name1‘, ‘name2‘, ‘name3‘, ‘name4‘, ‘name5‘);

1、使用array_column()

  PHP在5.5.0版本之后,添加了一个专用的函数array_column()

 方法:

1 $name_list = array_column($arr, ‘name‘);

 2、array_walk()方法

  array_walk()使用用户自定义函数对数组中的每个元素做回调处理

1 $name_list = array();
2 array_walk($arr, function($value, $key) use (&$name_list ){
3     $name_list [] = $value[‘name‘];
4 });

 3、array_map()方法

  array_map()函数和array_walk() 作用类似,将回调函数作用到给定数组的单元上

1 $name_list = array();
2 array_map(function($value) use (&$name_list){
3     $name_list[] = $value[‘name‘];
4 }, $arr);

4、foreach循环遍历方法

  foreach()循环相对上面的方法效率稍微低一些

1 $name_list = array();
2 foreach ($arr as $value) {
3     $name_list[] = $value[‘name‘];
4 }

5、array_map变种

  把$arr数组的每一项值的开头值移出,并获取移除的值作为新数组。注意此时新数组$name_list的键仍是原数组$arr的键

1 $name_list = array_map(‘array_shift‘, $arr);
2 //注意:该功能会获取$arr中的 id 列,而不是name 列。
3 //另外,如果需要获取二维数组每一项的开头列或结尾列,也可以这样做:
4
5 $name_list = array_map(‘reset‘, $arr);
6 $name_list = array_map(‘end‘, $arr);
7
8 //这三个变种方法作用比较局限,仅在获取第一列或最后一列的时候有用,在
9 //复杂的数组中就难以发挥作用了。
时间: 2024-08-01 16:43:22

PHP之提取多维数组指定列的方法的相关文章

c语言:将一个二维数组行和列的元素互换,存到另一个二维数组中。

将一个二维数组行和列的元素互换,存到另一个二维数组中. 解:程序: #include<stdio.h> int main() { int i, j, a[2][3] = { {1,2,3},{4,5,6} },b[3][2]; printf("array a:\n"); for (i = 0; i <=1; i++)//处理a数组中的一行中各元素 { for (j = 0; j <= 2; j++)//处理a数组中的某一列元素 { printf("%5

PHP计算二维数组指定元素的和

array_sum(array_column($arr, 'num')); //计算二维数组指定元素的和 $arr = [ [ 'id'=>1, 'num'=>3, ], [ 'id'=>2, 'num'=>4, ], [ 'id'=>3, 'num'=>1, ], ]; //计算二维数组指定元素的和 $arr = array_sum(array_column($arr, 'num'));//输出8 var_dump($arr); 原文地址:https://www.cn

C++中二维数组传参的方法详解

C++中二维数组传参的方法详解 首先需要明确,C++中其实没有多维数组,所谓的多维数组,其实就是数组的数组: 另外,数组中元素的个数也是数组类型的一部分. 当一个数组的元素仍然是数组时,通常使用2个维度来定义它,一个数组表示数组本身的大小,另一个维度表示其元素大小(它的元素也是数组): int ia[3][4]; //大小为3的数组,每个元素是含有4个整数的数组 int (*p)[4] = ia;//p指向含有4个整数的数组(指向第一个内层数组) 1 将给定第二维长度的二维数组作为形参传递 #i

二维数组的列排序

给出一个二维数组,请将这个二维数组按第i列(i从1开始)排序,如果第i列相同,则对相同的行按第i+1列的元素排序,如果第i+1列的元素也相同,则继续比较第i+2列,以此类推,直到最后一列.如果第i列到最后一列都相同,则按原序排列. 实现以下接口: 输入一个m*n 的整数数组,实现按规则排列,返回排列后的数组. 调用者会保证: 比如输入数组为: 1,2,3 2,3,4 2,3,1 1,3,1 按第二列排序: 输出: 1,2,3 2,3,1 1,3,1 2,3,4 分析:从最后一列开始使用稳定的排序

php数组函数array_column:不用循环就能提取多维数组内容

作为一个有多年PHP开发经验的码农,我也是前段时间才发现PHP处理数组有这么好用的函数, 至此之前,我处理数组的数据基本都是使用循环,记录一下两个函数的用法: array_column() 函数 返回输入数组中某个单一列的值. 语法: array_column(array,column_key,index_key); 参数 array 必需.规定要使用的多维数组(记录集). column_key 必需.需要返回值的列. 可以是索引数组的列的整数索引,或者是关联数组的列的字符串键值. 该参数也可以

PHP获取二维数组指定字段值的和

array_sum(array_column($arr, 'num')); //获取二维数组 num字段的和 $arr = [ [ 'device_uid' => '123456', 'num' => '5', ], [ 'device_uid' => '123457', 'num' => '2', ], [ 'device_uid' => '123458', 'num' => '4', ], ]; echo '<pre>'; //先对二维数组进行处理,再对

new二维数组的几种方法

(1)可以直接[][]访问.但是内存不连续,不是很推荐使用,除非m\n都不确定 A** ga = new A*[m];//第一维,m为行数(数组[m]内存类型为A的指针) for(int i=0;i<m;++i) {     ga[i] = new A[n]; //分配第二维,每一行的空间.(ga[i]为指针,指向数组A[n]) } ... for(int i=0;i<m;++i) {     delete []ga[i]; } delete []ga; 缺点:非连续储存,程序烦琐,ga为A*

二维数组和函数以及方法

二维数组,for each的运用,方法的定义.特点.结构. 昨天做的ATM转换成函数型代码

PHP使用PHPExcel删除Excel单元格指定列的方法是怎样

有一个系统仅公司内部和外部经销商使用,在一个导出功能中公司内部员工跟外部经销商导出的列是不一样的(某些数据是不能提供给经销商的)因为导出的数据都是一样的(某些列外数据外部没有)因此并没有单独处理,而是统一生成然后根据不同的账户再删除没有权限的列/*** @Author: HTL* @Description: 移出单元列* @objPHPExcel: phpexecel object* @remove_columns:要移出的列*/function _remove_column($objPHPEx