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 输出简单动态WAP页面
Jun 09 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
Jun 13 PHP
php设计模式 Prototype (原型模式)代码
Jun 26 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
Jul 15 PHP
浅析php数据类型转换
Jan 09 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
Apr 29 PHP
php实现简单的MVC框架实例
Sep 23 PHP
php实现搜索类封装示例
Mar 31 PHP
Discuz论坛密码与密保加密规则
Dec 19 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
Aug 10 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
Laravel框架源码解析之模型Model原理与用法解析
May 14 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
支持oicq头像的留言簿(一)
2006/10/09 PHP
用PHP进行MySQL删除记录操作代码
2008/06/07 PHP
PHP中echo和print的区别
2014/08/28 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
jQuery select控制插件
2009/08/17 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
vue cli 全面解析
2018/02/28 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
Python3数字求和的实例
2019/02/19 Python
tensorflow如何批量读取图片
2019/08/29 Python
python超时重新请求解决方案
2019/10/21 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
社团活动策划书范文
2014/01/09 职场文书
媒体宣传策划方案
2014/05/25 职场文书
自查自纠整改报告
2014/11/06 职场文书
2015年采购员工作总结
2015/04/27 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书