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入门学习知识点二 PHP简单的分页过程与原理
Jul 14 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
php处理文件的小例子(解压缩,删除目录)
Feb 03 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
PHP实现WebService的简单示例和实现步骤
Mar 27 PHP
php发送html格式文本邮件的方法
Jun 10 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
通过PHP设置BugFree获取邮箱通知
Apr 25 PHP
PHP操作路由器实现方法示例
Apr 27 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
Oct 10 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
德生S2000电路分析
2021/03/02 无线电
[原创]效率较高的php下读取文本文件的代码
2008/07/02 PHP
php设计模式 Delegation(委托模式)
2011/06/26 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
2015/12/29 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
thinkPHP5实现数据库添加内容的方法
2017/10/25 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
分分钟入门python语言
2018/03/20 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
Python单链表原理与实现方法详解
2020/02/22 Python
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
女大学生自我鉴定
2013/12/09 职场文书
经理管理专业自荐信范文
2013/12/31 职场文书
计算机相关的自我评价
2014/01/15 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
大学迎新标语
2014/06/26 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
运动会加油稿50字
2015/07/21 职场文书
房屋转让协议书(标准范本)
2016/03/21 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
MySQL root密码的重置方法
2021/04/21 MySQL
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫