php之array_column 的使用
听说只有大牛级的高工才知道的函数array_column ()
讲真,我才知道。
(PHP 5 >= 5.5.0, PHP 7)
array_column — 返回数组中指定的一列
说明
array_column() 返回input
数组中键值为column_key
的列, 如果指定了可选参数index_key
,那么input
数组中的这一列的值将作为返回数组中对应值的键。
参数
input
需要取出数组列的多维数组(或结果集)
column_key
- 需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键。 也可以是
NULL
,此时将返回整个数组(配合index_key
参数来重置数组键的时候,非常管用) index_key
作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。
返回值
从多维数组中返回单列数组
根据说明,我们可以写出两个demo
1.首先,我们定义二维数组
$arr = array( array( 'id' => 1, 'name' => 'A', 'age' => 11, ), array( 'id' => 2, 'name' => 'B', 'age' => 12, ), array( 'id' => 3, 'name' => 'C', 'age' => 13, ), array( 'id' => 4, 'name' => 'D', 'age' => 14, ) );
2.demo1
print_r(array_column($arr,"name")); //Array ( [0] => A [1] => B [2] => C [3] => D )
3.demo2
print_r(array_column($arr,"age","name")); //Array ( [A] => 11 [B] => 12 [C] => 13 [D] => 14 )
封装
这个函数是php5.5才支持,小于5.5的,可以封装一个
/** * 返回数组中指定的一列 * @param $input 需要取出数组列的多维数组(或结果集) * @param $columnKey 需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键。 也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组键的时候,非常管用) * @param null $indexKey 作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。 * @return array 返回值 */ function _array_column($input, $columnKey, $indexKey = null) { if (!function_exists('array_column')) { $columnKeyIsNumber = (is_numeric($columnKey)) ? true : false; $indexKeyIsNull = (is_null($indexKey)) ? true : false; $indexKeyIsNumber = (is_numeric($indexKey)) ? true : false; $result = array(); foreach ((array)$input as $key => $row) { if ($columnKeyIsNumber) { $tmp = array_slice($row, $columnKey, 1); $tmp = (is_array($tmp) && !empty($tmp)) ? current($tmp) : null; } else { $tmp = isset($row[$columnKey]) ? $row[$columnKey] : null; } if (!$indexKeyIsNull) { if ($indexKeyIsNumber) { $key = array_slice($row, $indexKey, 1); $key = (is_array($key) && !empty($key)) ? current($key) : null; $key = is_null($key) ? 0 : $key; } else { $key = isset($row[$indexKey]) ? $row[$indexKey] : 0; } } $result[$key] = $tmp; } return $result; } else { return array_column($input, $columnKey, $indexKey); } }
php之array_column 的使用的更多相关文章
- PHP获取二维数组中的指定若干列【同array_column】
PHP5.3以上 用到了array_map 使用匿名函数进行处理 代码: <?php function array_col($arr = array(), $idx = 0, $newidx ...
- php数组函数分析--array_column
array_column 官方地址:array_column array_column 只能在 PHP版本5.5以上的运行,5.3是不支持这个函数的.如果5.3使用会报: Fatal error: C ...
- array_map与array_column之间的关系
/*|----------------------------------------------------------|array_map();将回调函数作用到给定数组的单元上|array_col ...
- array_map()与array_shift()搭配使用 PK array_column()函数
array_map()与arra_shift()搭配使用,还是来看例子吧,比较直观一点 <?php $user = array( 0 => array( 'name' => '张三' ...
- [PHP]array_map与array_column之间的关系
---------------------------------------------------------------------------------------------------- ...
- PHP array_column() 函数
定义和用法 array_column() 返回输入数组中某个单一列的值. array_column(array,column_key,index_key); 参数 描述 array 必需.规定要使用的 ...
- php5.5新函数array_column
php5.5新增了一个新的数组函数,感觉挺使用的,低版本的实现按照如下实现 if(!function_exists('array_column')){ function array_column($i ...
- array_column php 函数
今天想从二维数组中取某个列成一维数组 结果发现 array_column需要php5.5支持才行 然后自己写了一个仿造版本的array_column 两种思路 1.直接遍历 取值给追加数组 返回 2. ...
- array_column php 函数 自定义版本 php_version<5.5
<?php if(!function_exists('array_column')) { /* * array_column() for PHP 5.4 and lower versions * ...
- 为什么解析 array_column不可用,
不久前,自己在一个小项目,我要拿出每个元素的一维数组key的值,一维阵列的形成,突然想到php 有一种功能,实现. $array = array ( array ( "id" =& ...
随机推荐
- SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
SQL连接可以分为内连接.外连接.交叉连接. 数据库数据: book表 stu表 1.内连接 ...
- 8.1 Socket编程
8.1 Socket编程 在很多底层网络应用开发者的眼里一切编程都是Socket,话虽然有点夸张,但却也几乎如此了,现在的网络编程几乎都是用Socket来编程.你想过这些情景么?我们每天打开浏览器浏览 ...
- 线上Django项目python2到3升级日记
这两天干了一个几斤疯狂的事情,花不到一个工作日的时间把一个线上Django项目语言版本从python2升级到Python31.字典的一个语法变化 Python2.7: if dict1.haskey( ...
- WebSocket 和 Golang 实现聊天功能
http://www.open-open.com/lib/view/open1416379948711.html 这个示例应用程序展示了如何使用 WebSocket, Golang 和 jQuery ...
- Android版本分布数据源
先来Android官方数据地址:http://developer.android.com/intl/zh-cn/about/dashboards/index.html 友盟指数,这个对国内开发者比较有 ...
- MapReduce的架构及原理
MapReduce是一种分布式计算模型,是Hadoop的主要组成之一,承担大批量数据的计算功能.MapReduce分为两个阶段:Map和Reduce. 一.MapReduce的架构演变 客户端向Job ...
- 架构之微服务设计(Nginx + Upsync)
Upsync,微博开源基于Nginx容器动态流量管理方案 . Nginx 以其超高的性能与稳定性,在业界获得了广泛的使用,微博的七层就大量使用了 Nginx .结合 Nginx 的健康检查模块,以及动 ...
- 字符流Reader和Writer
1.Rader是字符输入流的父类. 2.Writer是字符输出流的父类. 3.字符流是以字符(char)为单位读取数据的,一次处理一个unicod. 4.字符类的底层仍然是基本的字节流. 5.Read ...
- Object类的equals()方法总结
1.equals()是Object中的方法,作用在于检测一个对象是否等于另一个对象. 2.在Object类中equals()方法是判断两个对象是否有相同的引用 ,即是否是相同的对象. 3.String ...
- SVN 使用方法
svn co http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码svn co svn://路径(目录或文件的全路径) [本地目录全路 ...