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中神奇的fastcgi_finish_request
May 02 PHP
php中通过虚代理实现延迟加载的实现代码
Jun 10 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
php发送post请求的三种方法
Feb 11 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
Mar 18 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 PHP
php常用的url处理函数总结
Nov 19 PHP
PHP弱类型的安全问题详细总结
Sep 25 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
Jun 22 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 PHP
php去除deprecated的实例方法
Nov 17 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
关于手调机和数调机的选择
2021/03/02 无线电
php array_slice函数的使用以及参数详解
2008/08/30 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
input的focus方法使用
2010/03/13 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
JS控件的生命周期介绍
2012/10/22 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
原生JS实现天气预报
2020/06/16 Javascript
python 正则式 概述及常用字符
2009/05/07 Python
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python中的字符串类型基本知识学习教程
2016/02/04 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
python下载图片实现方法(超简单)
2017/07/21 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
flask实现验证码并验证功能
2019/12/05 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
python简单实现9宫格图片实例
2020/09/03 Python
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
GLAMGLOW格莱魅美国官网:美国知名的面膜品牌
2016/12/31 全球购物
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
Vichy薇姿加拿大官网:法国药妆,全球专业敏感肌护肤领先品牌
2018/07/11 全球购物
表扬信格式
2014/01/12 职场文书
国培远程培训感言
2014/03/08 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
考试作弊检讨
2015/01/27 职场文书
高中家长意见怎么写
2015/06/03 职场文书
员工试用期工作总结
2019/06/20 职场文书
python3美化表格数据输出结果的实现代码
2021/04/14 Python
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python