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 相关文章推荐
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
Apr 18 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
PHP文件上传判断file是否己选择上传文件的方法
Nov 10 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
PHP生成不重复标识符的方法
Nov 21 PHP
PHP和C#可共用的可逆加密算法详解
Oct 26 PHP
WordPress网站性能优化指南
Nov 18 PHP
php实现三级级联下拉框
Apr 17 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
Nov 09 PHP
PHP实现登陆表单提交CSRF及验证码
Jan 24 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 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
层叠菜单的动态生成
2006/10/09 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
PHP 无限级分类
2017/05/04 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
理解JSON:3分钟课程
2011/10/28 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
Python字符转换
2008/09/06 Python
跟老齐学Python之折腾一下目录
2014/10/24 Python
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
python操作文件的参数整理
2019/06/11 Python
django如何自己创建一个中间件
2019/07/24 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
python flask搭建web应用教程
2019/11/19 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
Aurora London官网:奢华、负担得起的皮革手袋
2020/08/01 全球购物
大学生创业感言
2014/01/25 职场文书