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 常用类整理
Dec 23 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
Oct 15 PHP
php中将数组转成字符串并保存到数据库中的函数代码
Sep 29 PHP
php实现的常见排序算法汇总
Sep 08 PHP
PHP生成不重复随机数的方法汇总
Nov 19 PHP
thinkphp备份数据库的方法分享
Jan 04 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
Oct 26 PHP
CI框架表单验证实例详解
Nov 21 PHP
PHP基于自增数据如何生成不重复的随机数示例
May 19 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
Dec 21 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
一文搞懂php的垃圾回收机制
Jun 18 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
web方式ftp
2006/10/09 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
php动态实现表格跨行跨列实现代码
2012/11/06 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
JavaScript XML操作 封装类
2009/07/01 Javascript
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
2012/12/11 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
JS短路原理的应用示例 精简代码的途径
2013/12/13 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
python代码中怎么换行
2020/06/17 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
h5封装下拉刷新
2020/08/25 HTML / CSS
shallow copy和deep copy的区别
2016/05/09 面试题
一套C#面试题
2013/10/09 面试题
小学生检讨书大全
2014/02/06 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
小平您好观后感
2015/06/09 职场文书
文书工作总结(范文)
2019/07/11 职场文书