php 返回数组中指定多列的方法
php array_column 方法可以返回数组中指定的一列,但不能返回多列,本文将介绍array_column方法的使用,并用代码演示返回数组中指定多列的方法。
1.array_column说明
array_column可以返回数组中指定一列
array array_column ( array $input , mixed $column_key [, mixed $index_key = null ] )
1
参数说明:
input
需要取出数组列的多维数组。 如果提供的是包含一组对象的数组,只有 public 属性会被直接取出。 为了也能取出 private 和 protected 属性,类必须实现 __get() 和 __isset() 魔术方法。
column_key
需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键,也可以是属性名。 也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组键的时候,非常管用)
index_key
作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。
例子:
返回数组中name列
<?php
$arr = array(
array('id'=>1001, 'name'=>'fdipzone', 'age'=>18, 'profession'=>'programmer'),
array('id'=>1002, 'name'=>'terry', 'age'=>19, 'profession'=>'designer'),
array('id'=>1003, 'name'=>'alex', 'age'=>20, 'profession'=>'tester'),
);
$result = array_column($arr, 'name');
print_r($result);
?>
输出:
Array
(
[0] => fdipzone
[1] => terry
[2] => alex
)
2.返回数组中指定多列的方法
array_column方法可以返回数组中指定一列,但不能返回多列,因此写了以下这个方法,支持返回数组中多列,参数调用与array_column相似。
<?php
/**
* 返回数组中指定多列
*
* @param Array $input 需要取出数组列的多维数组
* @param String $column_keys 要取出的列名,逗号分隔,如不传则返回所有列
* @param String $index_key 作为返回数组的索引的列
* @return Array
*/
function array_columns($input, $column_keys=null, $index_key=null){
$result = array();
$keys =isset($column_keys)? explode(',', $column_keys) : array();
if($input){
foreach($input as $k=>$v){
// 指定返回列
if($keys){
$tmp = array();
foreach($keys as $key){
$tmp[$key] = $v[$key];
}
}else{
$tmp = $v;
}
// 指定索引列
if(isset($index_key)){
$result[$v[$index_key]] = $tmp;
}else{
$result[] = $tmp;
}
}
}
return $result;
}
// 演示代码
$arr = array(
array('id'=>1001, 'name'=>'fdipzone', 'age'=>18, 'profession'=>'programmer'),
array('id'=>1002, 'name'=>'terry', 'age'=>19, 'profession'=>'designer'),
array('id'=>1003, 'name'=>'alex', 'age'=>20, 'profession'=>'tester'),
);
echo '指定返回列及索引列'.PHP_EOL;
$result = array_columns($arr, 'name,profession', 'id');
print_r($result);
echo PHP_EOL.'指定返回列,不指定索引列'.PHP_EOL;
$result = array_columns($arr, 'name,profession');
print_r($result);
echo PHP_EOL.'不指定返回列,指定索引列'.PHP_EOL;
$result = array_columns($arr, null, 'id');
print_r($result);
echo PHP_EOL.'不指定返回列,不指定索引列'.PHP_EOL;
$result = array_columns($arr);
print_r($result);
?>
输出:
指定返回列及索引列
Array
(
[1001] => Array
(
[name] => fdipzone
[profession] => programmer
)
[1002] => Array
(
[name] => terry
[profession] => designer
)
[1003] => Array
(
[name] => alex
[profession] => tester
)
)
指定返回列,不指定索引列
Array
(
[0] => Array
(
[name] => fdipzone
[profession] => programmer
)
[1] => Array
(
[name] => terry
[profession] => designer
)
[2] => Array
(
[name] => alex
[profession] => tester
)
)
不指定返回列,指定索引列
Array
(
[1001] => Array
(
[id] => 1001
[name] => fdipzone
[age] => 18
[profession] => programmer
)
[1002] => Array
(
[id] => 1002
[name] => terry
[age] => 19
[profession] => designer
)
[1003] => Array
(
[id] => 1003
[name] => alex
[age] => 20
[profession] => tester
)
)
不指定返回列,不指定索引列
Array
(
[0] => Array
(
[id] => 1001
[name] => fdipzone
[age] => 18
[profession] => programmer
)
[1] => Array
(
[id] => 1002
[name] => terry
[age] => 19
[profession] => designer
)
[2] => Array
(
[id] => 1003
[name] => alex
[age] => 20
[profession] => tester
)
)
php 返回数组中指定多列的方法的更多相关文章
- 返回数组中指定的一列,将键值作为元素键名array_column
array_column() 函数 从记录集中取出 last_name 列: <?php // 表示由数据库返回的可能记录集的数组 $a = array( array( 'id' => 5 ...
- 【LeetCode每天一题】Find First and Last Position of Element in Sorted Array(找到排序数组中指定元素的开始和结束下标)
Given an array of integers nums sorted in ascending order, find the starting and ending position of ...
- 用JS编写一个函数,返回数组中重复出现过的元素
用JS编写一个函数,返回数组中重复出现过的元素,见下面的代码: , , , , , , , ]; var getRepeat = function (arr) { var obj = {}; , le ...
- 二维数组过滤,根据多个条件获取二维数组中指定的arr
/** * 二维数组过滤,根据多个条件获取二维数组中指定的arr * @param $data_arr * @param $lm_number * @param $source_type * @par ...
- PHP提取多维数组指定一列的方法大全
目录 1 array_column函数法 2 array_walk函数法 3 array_map函数法 4 foreach循环法 5 array_map变种 PHP中对多维数组特定列的提取,是个很常用 ...
- C#对Excel中指定一列或一行实现隐藏或显示!
C#对Excel中指定一列或一行实现隐藏或显示!不会,求指导!
- 移除数组中指定键(Yii2)
/** * 移除数组中指定key * @param $data * @param $key * @return array */ public static function removeKey($d ...
- react找到对象数组中指定的值
找到对象数组中指定的值var array = [ { label: "Custom", value: "0" }, ...
- 根据指定id取出数组中指定对象
// 需求:根据Id取出数组中指定的对象 let arr = [ { id: 1, rotationAngle: 330, target: '目标1' }, { id: 2, rotationAngl ...
随机推荐
- Hibernate入门级实例
一.开发环境 Win8 + jdk1.7 + MyEclipse + Tomcat5.0 + MySQL 说明:其实Hibernate是非常独立的框架,根本不需要MyEclipse,Eclipse,T ...
- LA3983 捡垃圾的机器人
Problem C - Robotruck Background This problem is about a robotic truck that distributes mail package ...
- nginx在windows平台下的使用笔记
nginx主要提供反向代理及负载均衡的能力,重定向报文代理及报文数据替换也是常用功能.(参考https://www.cnblogs.com/fanzhidongyzby/p/5194895.html) ...
- Windows7 64位 安装mysql
Windows上安装MySQL还是比较方便的,之前做过一个Windows10上面的安装方法,但是一个同学说自己的电脑是Windows7的,所以我写一个Windows7上的MySQL安装方法. MySQ ...
- python 文件操作(二)
一. 文件的读写 1.找到文件 文件路径:./test.py 2.打开文件 open('文件路径','模式') 模式: r, 以只读的方式打开 w, 打开一个文件只用于写入,如文件已存在,直接重 ...
- Python - excel 详解
安装 pip install xlrd # 读xlspip install xlwt # 写xlspip install xlutils # 改写xls 读取 Excel ...
- 37 有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号那位.
题目:有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号那位. public class _037NumberOff { public st ...
- Java反射api详解
虽然已经用了很多反射相关的api,但是还没有详细研究官方api文档,下面以1.6为基础研究一下api文档(因为只找到了1.6的中文版...),同时补充1.7和1.8对反射相关api的改变.
- 《T-SQL查询》- SQL逻辑处理
下面列出SQL查询语句的一般形式,以及各个子句被逻辑处理的顺序步骤: (8) SELECT (9) DISTINCT (11) <TOP_specification> <select ...
- C#利用ntsd.exe关闭进程
有时我们会发现在任务管理器中无法关闭某个进程,可以使用下面的方法强行关闭,注意不要杀掉进程表中的系统核心进程: 1.使用Windows XP/2000自带的工具 从Windows 2000开始,Win ...