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伪造referer实例代码
Sep 20 PHP
snoopy 强大的PHP采集类使用实例代码
Dec 09 PHP
国外PHP程序员的13个好习惯小结
Feb 20 PHP
PHP中最容易忘记的一些知识点总结
Apr 28 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
用PHP解决的一个栈的面试题
Jul 02 PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
Dec 15 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
Jul 18 PHP
如何直接访问php实例对象中的private属性详解
Oct 12 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
Apr 23 PHP
PHP容器类的两种实现方式示例
Jul 24 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 session 检测和注销
2009/03/16 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
php文件上传简单实现方法
2015/01/24 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
jQuery 加上最后自己的验证
2009/11/04 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
jQuery实战之品牌展示列表效果
2011/04/10 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
jquery tab插件精简版分享
2011/09/10 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
微信小程序实现点赞业务
2021/02/10 Javascript
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
详解python的webrtc库实现语音端点检测
2017/05/31 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
2020/03/16 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
Aosom西班牙:家具在线商店
2020/06/11 全球购物
项目经理的岗位职责
2013/11/23 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
公司员工培训管理制度
2015/08/04 职场文书
初中语文教学反思范文
2016/03/03 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫