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 相关文章推荐
第十三节 对象串行化 [13]
Oct 09 PHP
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
有关phpmailer的详细介绍及使用方法
Jan 28 PHP
PHP函数microtime()用法与说明
Dec 04 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
destoon复制新模块的方法
Jun 21 PHP
php随机取mysql记录方法小结
Dec 27 PHP
php判断文件夹是否存在不存在则创建
Apr 09 PHP
PHP超全局数组(Superglobals)介绍
Jul 01 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
php libevent 功能与使用方法详解
Mar 04 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读取html并截取字符串的简单代码
2009/11/30 PHP
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
浅谈JavaScript的事件
2015/02/27 Javascript
JS采用绝对定位实现回到顶部效果完整实例
2016/06/20 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
js 对象使用的小技巧实例分析
2019/11/08 Javascript
JS实现小星星特效
2019/12/24 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
Python数据可视化之画图
2019/01/15 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
Python requests设置代理的方法步骤
2020/02/23 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
Python collections.deque双边队列原理详解
2020/10/05 Python
高级文秘工作总结的自我评价
2013/09/28 职场文书
校三好学生主要事迹
2014/01/11 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
交通安全教育心得体会
2016/01/15 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技