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 相关文章推荐
Optimizer与Debugger兼容性问题的解决方法
Dec 01 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
Jul 07 PHP
php中使用cookie来保存用户登录信息的实现代码
Mar 08 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
PHP基于数组实现的分页函数实例
Aug 20 PHP
PHP输出缓冲控制Output Control系列函数详解
Jul 02 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
May 12 PHP
Django中的cookie与session操作实例代码
Aug 17 PHP
PHP格式化显示时间date()函数代码
Oct 03 PHP
PHP crypt()函数的用法讲解
Feb 15 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
Apr 10 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
Feb 10 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
层叠菜单的动态生成
2006/10/09 PHP
JavaScript 用cloneNode方法克隆节点的代码
2012/10/15 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
JS实现TITLE悬停长久显示效果完整示例
2020/02/11 Javascript
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
np.random.seed() 的使用详解
2020/01/14 Python
Python运行DLL文件的方法
2020/01/17 Python
Python turtle画图库&&画姓名实例
2020/01/19 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
详解python datetime模块
2020/08/17 Python
python 实现端口扫描工具
2020/12/18 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
测试工程师程序员求职信范文
2014/02/20 职场文书
在校大学生自我评价范文
2014/09/12 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
计算机实训报告总结
2014/11/05 职场文书
社区低保工作总结2015
2015/07/23 职场文书
安全教育日主题班会
2015/08/13 职场文书