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 相关文章推荐
PHP中实现进程间通讯
Oct 09 PHP
PHP4之COOKIE支持详解
Oct 09 PHP
php生成xml简单实例代码
Dec 16 PHP
PHP输入流php://input介绍
Sep 18 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
Nov 19 PHP
微信接口生成带参数的二维码
Jul 31 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
PHP 多任务秒级定时器的实现方法
May 13 PHP
PHP实现单条sql执行多个数据的insert语句方法
Oct 11 PHP
tp5.1 框架join方法用法实例分析
May 26 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
PHP 如何向 MySQL 发送数据
2006/10/09 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
过虑特殊字符输入的js代码
2010/08/05 Javascript
JavaScript中获取元素索引的函数
2010/09/10 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
在漏洞利用Python代码真的很爽
2007/08/26 Python
Python常用算法学习基础教程
2017/04/13 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
pandas 时间格式转换的实现
2019/07/06 Python
python实现邮件自动发送
2019/08/10 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
高级运动鞋:GREATS
2019/07/19 全球购物
Jar包的作用是什么
2014/03/30 面试题
节水标语大全
2014/06/11 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
学校师德师风整改措施
2014/10/27 职场文书
期末考试复习计划
2015/01/19 职场文书
幼儿园六一主持词
2015/06/30 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
react合成事件与原生事件的相关理解
2021/05/13 Javascript
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis
Java常用函数式接口总结
2021/06/29 Java/Android
Golang 结构体数据集合
2022/04/22 Golang