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详细彻底学习Smarty
Mar 27 PHP
PHP防CC攻击实现代码
Dec 29 PHP
php实现Linux服务器木马排查及加固功能
Dec 29 PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 PHP
eclipse php wamp配置教程
Jun 30 PHP
PHP基于curl后台远程登录正方教务系统的方法
Oct 14 PHP
简单实现php上传文件功能
Sep 21 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
Sep 30 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 04 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 无限级 SelectTree 类
2009/05/19 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
理解JSON:3分钟课程
2011/10/28 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
Python getopt模块处理命令行选项实例
2014/05/13 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
python连接mongodb密码认证实例
2018/10/16 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Django Celery异步任务队列的实现
2019/07/24 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
浅谈Python 参数与变量
2020/06/20 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
美的官方商城:Midea
2016/09/14 全球购物
金智子午JAVA面试题
2015/09/04 面试题
业务部主管岗位职责
2014/01/29 职场文书
ktv总经理岗位职责
2014/02/17 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL