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中3des加密代码(完全与.net中的兼容)
Aug 02 PHP
你可能不知道PHP get_meta_tags()函数
May 12 PHP
Windows下的PHP安装pear教程
Oct 24 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
PHP文件读写操作相关函数总结
Nov 18 PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
Mar 18 PHP
php结合curl实现多线程抓取
Jul 09 PHP
ThinkPHP中html:list标签用法分析
Jan 09 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
Mar 18 PHP
Yii 使用intervention/image拓展实现图像处理功能
Jun 22 PHP
基于laravel缓冲cache的用法详解
Oct 23 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 substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
php获取apk包信息的方法
2014/08/15 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
Bootstrap基础学习
2015/06/16 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
[47:18]完美世界DOTA2联赛循环赛 IO vs FTD BO2第一场 11.05
2020/11/06 DOTA
Python greenlet实现原理和使用示例
2014/09/24 Python
Django admin美化插件suit使用示例
2017/12/12 Python
Python对List中的元素排序的方法
2018/04/01 Python
Python中按键来获取指定的值
2019/03/02 Python
详解Python3 基本数据类型
2019/04/19 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
.NET现在共支持多少种语言
2014/02/26 面试题
岗位职责范本
2013/11/23 职场文书
村庄环境整治方案
2014/05/15 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书