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代码
Sep 10 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
Aug 25 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
Nov 14 PHP
彻底删除thinkphp3.1案例blog标签的方法
Dec 05 PHP
php while循环控制的简单实例
May 30 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
PHP实现简易blog的制作
Oct 24 PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
PHP fopen函数用法实例讲解
Feb 15 PHP
PHP经典设计模式之依赖注入定义与用法详解
May 21 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
PHP4实际应用经验篇(5)
2006/10/09 PHP
开源SNS系统-ThinkSNS
2008/05/18 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
神盾加密解密教程(三)PHP 神盾解密工具
2014/06/08 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
研究生自荐信
2013/10/09 职场文书
中式餐厅创业计划书范文
2014/01/23 职场文书
工程部主管岗位职责
2015/02/12 职场文书
写给女朋友的保证书
2015/05/09 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python
python四种出行路线规划的实现
2021/06/23 Python