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仿ZOL分页类代码
Oct 02 PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
zf框架的registry(注册表)使用示例
Mar 13 PHP
浅析iis7.5安装配置php环境
May 10 PHP
PHP中SSO Cookie登录分析和实现
Nov 06 PHP
php显示页码分页类的封装
Jun 08 PHP
万能的php分页类
Jul 06 PHP
php语法检查的方法总结
Jan 21 PHP
Laravel中9个不经常用的小技巧汇总
Apr 16 PHP
PHP抽象类与接口的区别实例详解
May 09 PHP
laravel通用化的CURD的实现
Dec 13 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生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
Python简单获取自身外网IP的方法
2016/09/18 Python
python实现换位加密算法的示例
2018/10/14 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
django基础学习之send_mail功能
2019/08/07 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
HEMA法国:荷兰原创设计
2019/02/21 全球购物
澳大利亚玩具剧场:Toy Playhouse
2019/03/03 全球购物
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
公司离职证明范本
2014/01/13 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
校长四风对照检查材料
2014/09/27 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP