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的预保留变量总结
Dec 04 PHP
php中几种常见安全设置详解
Apr 06 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
Sep 13 PHP
初品cakephp 入门基础
Feb 16 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
php数组去除空值函数分享
Feb 02 PHP
thinkPHP5.0框架API优化后的友好性分析
Mar 17 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 PHP
php写app用的框架整理
Sep 29 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
让Firefox支持event对象实现代码
2009/11/07 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
node.js通过url读取文件
2020/10/16 Javascript
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
Python使用struct处理二进制的实例详解
2017/09/11 Python
Python基础之文件读取的讲解
2019/02/16 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
python 带时区的日期格式化操作
2020/10/23 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
荷兰电脑专场:Paradigit
2018/05/05 全球购物
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
什么时候用assert
2015/05/08 面试题
数控专业毕业生求职信范文
2013/09/21 职场文书
电气技术员岗位职责
2013/11/19 职场文书
机关单位动员会主持词
2014/03/20 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
干部个人对照检查材料
2014/08/25 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang