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在Web开发领域的优势
Oct 09 PHP
PHP可变函数的使用详解
Jun 14 PHP
深入array multisort排序原理的详解
Jun 18 PHP
解析PHP中intval()等int转换时的意外异常情况
Jun 21 PHP
php curl基本操作详解
Jul 23 PHP
destoon实现调用自增数字从1开始的方法
Aug 21 PHP
php+mysqli事务控制实现银行转账实例
Jan 29 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
PHP+JS三级菜单联动菜单实现方法
Feb 24 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
Oct 16 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
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
JavaScript 继承的实现
2009/07/09 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
微信小程序模版渲染详解
2018/01/26 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
Python实现统计文本文件字数的方法
2017/05/05 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
含精油的天然有机化妆品:Indemne
2019/08/27 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
盛大二次面试题
2016/11/18 面试题
创业计划书模版
2014/02/05 职场文书
地震捐款倡议书
2014/08/29 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python