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常用的缓存技术汇总
May 05 PHP
php实现的Captcha验证码类实例
Sep 22 PHP
php实现的ping端口函数实例
Nov 12 PHP
配置php.ini实现PHP文件上传功能
Nov 27 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
PHP模拟QQ登录的方法
Jul 29 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
Jan 05 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
PHP-FPM实现性能优化
Mar 31 PHP
php支付宝在线支付接口开发教程
Sep 19 PHP
PHP单例模式简单用法示例
Jun 23 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 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函数(ignore_user_abort)
2012/08/01 PHP
基于header的一些常用指令详解
2013/06/06 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
用js遍历 table的脚本
2008/07/23 Javascript
js分解url参数(面向对象-极简主义法应用)
2012/08/09 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
2013/12/18 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
2016/05/15 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
Javascript 模拟mvc实现点餐程序案例详解
2020/12/24 Javascript
Python模块包中__init__.py文件功能分析
2016/06/14 Python
Python生成指定数量的优惠码实操内容
2019/06/18 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
python类中super() 的使用解析
2019/12/19 Python
深入浅析python的第三方库pandas
2020/02/13 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
美国第二大连锁药店:Rite Aid
2019/04/03 全球购物
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
教师绩效考核方案
2014/01/21 职场文书
群众路线剖析材料
2014/02/02 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫
Python经常使用的一些内置函数
2022/04/11 Python