php5.5新数组函数array_column使用


Posted in PHP onJuly 08, 2013

PHP5.5发布了,其中增加了一个新的数组函数array_column,感觉不错的!但是低版本PHP要使用,得自己实现:
参考地址:https://wiki.php.net/rfc/array_column

if(!function_exists('array_column')){ 
    function array_column($input, $columnKey, $indexKey=null){ 
        $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; 
    } 
} // 使用例子 
$records = array( 
    array( 
        'id' => 2135, 
        'first_name' => 'John', 
        'last_name' => 'Doe'
    ), 
    array( 
        'id' => 3245, 
        'first_name' => 'Sally', 
        'last_name' => 'Smith'
    ), 
    array( 
        'id' => 5342, 
        'first_name' => 'Jane', 
        'last_name' => 'Jones'
    ), 
    array( 
        'id' => 5623, 
        'first_name' => 'Peter', 
        'last_name' => 'Doe'
    ) 
); 
$firstNames = array_column($records, 'first_name'); 
print_r($firstNames); 
/* 
Array 
( 
    [0] => John 
    [1] => Sally 
    [2] => Jane 
    [3] => Peter 
) 
*/
$records = array( 
    array(1, 'John', 'Doe'), 
    array(2, 'Sally', 'Smith'), 
    array(3, 'Jane', 'Jones') 
); 
$lastNames = array_column($records, 2); 
print_r($lastNames); 
/* 
Array 
( 
    [0] => Doe 
    [1] => Smith 
    [2] => Jones 
) 
*/
$mismatchedColumns = array( 
    array( 
        'a' => 'foo', 
        'b' => 'bar', 
        'e' => 'baz'
    ), 
    array( 
        'a' => 'qux', 
        'c' => 'quux', 
        'd' => 'corge'
    ), 
    array( 
        'a' => 'grault', 
        'b' => 'garply', 
        'e' => 'waldo'
    ), 
); 
$foo = array_column($mismatchedColumns, 'a', 'b'); 
print_r($foo); 
/* 
Array 
( 
    [bar] => foo 
    [0] => qux 
    [garply] => grault 
) 
*/

array_column 用于获取二维数组中的元素(PHP 5 >= 5.5.0)

<?php
// Array representing a possible record set returned from a database
$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
    ),
    array(
        'id' => 5342,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
    ),
    array(
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
    )
);$first_names = array_column($records, 'first_name');
print_r($first_names);
?>
Array
(
    [0] => John
    [1] => Sally
    [2] => Jane
    [3] => Peter
)<?php
// Using the $records array from Example #1
$last_names = array_column($records, 'last_name', 'id');
print_r($last_names);
?>
Array
(
    [2135] => Doe
    [3245] => Smith
    [5342] => Jones
    [5623] => Doe
)
PHP 相关文章推荐
PHP&amp;MYSQL服务器配置说明
Oct 09 PHP
十天学会php之第七天
Oct 09 PHP
PHP URL地址获取函数代码(端口等) 推荐
May 15 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
解析php多线程下载远程多个文件
Jun 25 PHP
php出现内存位置访问无效错误问题解决方法
Aug 16 PHP
CentOS下PHP安装Oracle扩展
Feb 15 PHP
PHP中把对象数组转换成普通数组的方法
Jul 10 PHP
微信公众号开发之文本消息自动回复php代码
Aug 08 PHP
PHP入门教程之操作符与控制结构流程详解
Sep 09 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
Aug 04 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
Nov 09 PHP
PHP 关于访问控制的和运算符优先级介绍
Jul 08 #PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 #PHP
php采集文章中的图片获取替换到本地(实现代码)
Jul 08 #PHP
php打开文件fopen函数的使用说明
Jul 05 #PHP
解析PHP中$_FILES的使用以及注意事项
Jul 05 #PHP
如何利用PHP执行.SQL文件
Jul 05 #PHP
PHP session_start()问题解疑(详细介绍)
Jul 05 #PHP
You might like
PHP 截取字符串专题集合
2010/08/19 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
2017/04/10 jQuery
React Native验证码倒计时工具类分享
2017/10/24 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python下线程之间的共享和释放示例
2015/05/04 Python
python 动态加载的实现方法
2017/12/22 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
JSF界面控制层技术
2013/06/17 面试题
《油菜花开了》教学反思
2014/02/22 职场文书
人力资源主管职责范本
2014/03/05 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
驾驶员培训方案
2014/05/01 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
优秀党员事迹材料
2014/12/18 职场文书
周年庆典答谢词
2015/01/20 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL