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最常用的ini函数分析 针对PHP.ini配置文件
Apr 22 PHP
PHP实现时间轴函数代码
Oct 08 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
Aug 10 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 PHP
使用ThinkPHP+Uploadify实现图片上传功能
Jun 26 PHP
php与Mysql的一些简单的操作
Feb 26 PHP
php文件压缩之PHPZip类用法实例
Jun 18 PHP
WordPress中的shortcode短代码功能使用详解
May 17 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
May 27 PHP
Mac系统完美安装PHP7详细教程
Jun 06 PHP
laravel 5.4中实现无限级分类的方法示例
Jul 27 PHP
php解决安全问题的方法实例
Sep 19 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
Zerg建筑一览
2020/03/14 星际争霸
php上的memcache和memcached两个pecl库
2010/03/29 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
php calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
php json相关函数用法示例
2017/03/28 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
jQuery入门知识简介
2010/03/04 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
通过数据库向Django模型添加字段的示例
2015/07/21 Python
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
django中的HTML控件及参数传递方法
2018/03/20 Python
python导入pandas具体步骤方法
2019/06/23 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
如何提高MySql的安全性
2014/06/19 面试题
2014年巴西世界杯口号
2014/06/05 职场文书
英语教育专业毕业生求职信
2014/08/28 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
Django实现drf搜索过滤和排序过滤
2021/06/21 Python