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 相关文章推荐
一个简单的自动发送邮件系统(一)
Oct 09 PHP
基于PHP静态类的原罪详解
May 06 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
Aug 19 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
Aug 20 PHP
php生成唯一的订单函数分享
Feb 02 PHP
php数组键名技巧小结
Feb 17 PHP
PHP getallheaders无法获取自定义头(headers)的问题
Mar 23 PHP
一个简单安全的PHP验证码类、PHP验证码
Sep 24 PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 06 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
Aug 03 PHP
基于PHP实现用户登录注册功能的详细教程
Aug 04 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解码unicode编码的中文字符代码分享
2014/08/13 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
js原型继承的两种方法对比介绍
2014/03/30 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
React事件处理的机制及原理
2018/12/03 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
python实现socket客户端和服务端简单示例
2014/02/24 Python
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
pycharm安装图文教程
2017/05/02 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
3种适用于Python的疯狂秘密武器及原因解析
2020/04/29 Python
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
总经理职责范文
2013/11/08 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
岗位职责说明书模板
2014/07/30 职场文书
教师年终个人总结
2015/02/11 职场文书
民事辩护词范文
2015/05/21 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
五年级作文之成长
2019/09/16 职场文书