PHP中array_map与array_column之间的关系分析


Posted in PHP onAugust 19, 2014

本文以实例形式分析了PHP中array_map与array_column之间的关系,具体分析如下:

array_map()与array_column()用法如下:

array_map();将回调函数作用到给定数组的单元上
array_column();快速实现:将二维数组转为一维数组

array_column()函数格式为:

array array_column ( array $input , mixed $column_key [, mixed $index_key ] );

返回input数组中值为column_key的列; 如果指定了可选参数index_key,返回的数组中 对应键 为input数组值index_key对应的值。

示例代码一:

$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
)

示例代码二:

$last_names = array_column($records, 'last_name', 'id');
print_r($last_names);

输出:

Array
(
  [2135] => Doe
  [3245] => Smith
  [5342] => Jones
  [5623] => Doe
)

当没有array_column()函数情况下,

使用array_map()实现例一:

$a = array_map(function($element){  //$records作为参数传入回调函数
return $element['last_name'];//返回数组元素值的last_name对应值
}, $records);//array_map返回数组,相当于把每个$element['last_name']存入新数组,所以是新建的索引

使用foreach实现例一:

foreach($records as $v)
{
  $b[] = $v['last_name'];
}
使用foreach实现例二:
$c = array();
foreach($records as $k=>$v)
{
 $c += array($v['id']=>$v['last_name']); //使用+运算符, 以追加的形式(不改变原数组索引), 合并组装的数组
} //若使用array_merge,数字键名将被重新编号

在取出的多条数据中,典型的二维数组,如果需要使用数据中单一的值与值对应的情况,array_column()即可完成,但是面对较复杂的数组结构,foreach才能让你更灵活,不过优先使用系统函数总是首选的。

PHP 相关文章推荐
建立动态的WML站点(三)
Oct 09 PHP
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 PHP
php中实现简单的ACL 完结篇
Sep 07 PHP
PHP程序级守护进程的实现与优化的使用概述
May 02 PHP
使用ThinkPHP+Uploadify实现图片上传功能
Jun 26 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
mac系统下为 php 添加 pcntl 扩展
Aug 28 PHP
PHP 二级子目录(后台目录)设置二级域名
Mar 02 PHP
基于win2003虚拟机中apache服务器的访问
Aug 01 PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 PHP
php解压缩zip和rar压缩包文件的方法
Jul 10 PHP
PHP读取文件或采集时解决中文乱码
Mar 09 PHP
phpword插件导出word文件时中文乱码问题处理方案
Aug 19 #PHP
PHP防止表单重复提交的几种常用方法汇总
Aug 19 #PHP
PHP中单引号与双引号的区别分析
Aug 19 #PHP
php版本的cron定时任务执行器使用实例
Aug 19 #PHP
PHP框架Swoole定时器Timer特性分析
Aug 19 #PHP
几道坑人的PHP面试题 试试看看你会不会也中招
Aug 19 #PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
Aug 19 #PHP
You might like
2019十大人气国漫
2020/03/13 国漫
apache中为php 设置虚拟目录
2014/12/17 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
js获取系统的根路径实现介绍
2013/09/08 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
深入探讨javascript中的数据类型
2015/03/04 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
2019/04/17 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
python学习基础之循环import及import过程
2018/04/22 Python
python版本的仿windows计划任务工具
2018/04/30 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
python将数据插入数据库的代码分享
2020/08/16 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
什么是封装
2013/03/26 面试题
小学生检讨书大全
2014/02/06 职场文书
暑期教师培训方案
2014/06/07 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
工作表现证明
2015/06/15 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
java executor包参数处理功能 
2022/02/15 Java/Android
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL