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中文本数据翻页(留言本翻页)
Oct 09 PHP
php 连接mssql数据库 初学php笔记
Mar 01 PHP
php函数之子字符串替换&amp;#65279; str_replace
Mar 23 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 PHP
用PHP实现的四则运算表达式计算实现代码
Aug 02 PHP
几个有用的php字符串过滤,转换函数代码
May 01 PHP
检查php文件中是否含有bom的函数
May 31 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
php按字符无乱码截取中文的方法
Mar 27 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
Feb 09 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
PHP解决高并发问题
Apr 01 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版本号
2006/10/09 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
XENON基于JSON变种
2010/07/27 Javascript
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
React中的render何时执行过程
2018/04/13 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
原生js实现弹幕效果
2020/11/29 Javascript
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
详解Python中的日志模块logging
2015/06/19 Python
Python实现基本线性数据结构
2016/08/22 Python
Django验证码的生成与使用示例
2017/05/20 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
机电一体化应届生求职信范文
2014/01/24 职场文书
功夫熊猫观后感
2015/06/10 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers
实操Python爬取觅知网素材图片示例
2021/11/27 Python