array_map 是PHP中的一个数组处理函数,它可以对一个或多个数组执行一个回调函数,并返回一个新数组,新数组的元素为回调函数处理过后每个数组对应元素的值。其基本语法如下所示:
PHP中array_map与array_column之间的关系分析
什么是array_map?
array_map
是PHP中的一个数组处理函数,它可以对一个或多个数组执行一个回调函数,并返回一个新数组,新数组的元素为回调函数处理过后每个数组对应元素的值。其基本语法如下所示:
array array_map( callable $callback , array $array1 [, array $array2, ...... ] )
其中 $callback 是处理每个元素的回调函数,使用数组内所有的值来调用该回调函数,而 $array1 和可选的 $array2、$array3 等参数是要处理的源数组。可以使用匿名函数作为回调函数。
示例一:对一个数据库查询得到的多行记录进行过滤删除并使用用户自定义的方法处理查询结果
<?php
//模拟数据库查询并获取多行数据
$data = [
['name'=>'Tom','age'=>22,'city'=>'New York'],
['name'=>'Jerry','age'=>20,'city'=>'Las Vegas'],
['name'=>'Lucy','age'=>25,'city'=>'Los Angeles']
];
//定义删除name字段为Tom的函数并使用array_map进行删除
$deleteTom = function($row) {
if($row['name'] === 'Tom'){
unset($row['name']);
}
return $row;
};
$data = array_map($deleteTom, $data);
//打印结果
var_dump($data);
输出的结果为:
array(3) {
[1]=>
array(2) {
'age'=>
int(20)
'city'=>
string(9) "Las Vegas"
}
[2]=>
array(2) {
'name'=>
string(4) "Lucy"
'age'=>
int(25)
'city'=>
string(11) "Los Angeles"
}
}
示例二:对数组中每个元素进行平方计算
<?php
//定义回调函数进行平方计算
$squareFn = function($val) {
return $val * $val;
};
//使用array_map函数计算平方
$arr = [1, 2, 3, 4, 5, 6];
$arrMap = array_map($squareFn, $arr);
//打印结果
var_dump($arrMap);
输出的结果为:
array(6) {
[0]=>
int(1)
[1]=>
int(4)
[2]=>
int(9)
[3]=>
int(16)
[4]=>
int(25)
[5]=>
int(36)
}
什么是array_column?
array_column
是PHP中的一种数组处理函数,它可以返回数组中的一个单一列,该列由数组中指定的键值指定。其基本语法如下所示:
array array_column( array $input , mixed $column_key [, mixed $index_key = null ] )
其中 $input 是要处理的数组,$column_key 是要返回的列,而可选的 $index_key 为输入数组将作为键值的列(如不存在,则使用当前元素的数字索引)。
示例一:从数据集合中获取用户名称列表并清除名称为空的记录
<?php
// 模拟数据集合
$records = [
['id'=>1, 'name'=>'tom', 'age'=>22,'sex'=>'男'],
['id'=>2, 'name'=>'jerry', 'age'=>20,'sex'=>'男'],
['id'=>3, 'name'=>'', 'age'=>25,'sex'=>'女']
];
// 通过array_column获取出所有的用户名并删除为空的用户名
$usernames = array_column($records, 'name');
$usernames = array_filter($usernames, function($val){
return !empty($val);
});
//打印结果
var_dump($usernames);
输出的结果为:
array(2) {
[0]=>
string(3) "tom"
[1]=>
string(5) "jerry"
}
示例二: 从数据集合中获取指定列的和
<?php
//模拟数据集合
$data = [
['name'=>'TomA','age'=>22],
['name'=>'JerryB','age'=>20],
['name'=>'LucyC','age'=>25],
['name'=>'DavidD','age'=>28]
];
//使用array_column函数获取age数组并求和
$ages = array_column($data, 'age');
$ageSum = array_sum($ages);
//打印结果
echo $ageSum;
输出的结果为:95
array_map与array_column的关系
array_map
和 array_column
函数都可以对数组中的所有元素进行处理。但是它们的使用场景有很大的区别。array_map
会对每个数组元素应用一个回调函数,返回的结果所形成的数组,而 array_column
只会返回指定 key 的元素,所以是提取数组中某一列的最佳方式,如果要同时对数组中的每个元素进行处理,请使用 array_map
。实际上,array_column
可以看成是一种特殊的 array_map
,其中键仅用于指定返回的列。
本文标题为:PHP中array_map与array_column之间的关系分析
基础教程推荐
- 小程序微信支付功能配置方法示例详解【基于thinkPHP】 2023-01-08
- PHP中抽象类,接口功能、定义方法示例 2022-12-29
- php数组随机排序实现方法 2024-01-16
- nginx去掉url中的index.php 2023-09-02
- php中sort函数排序知识点总结 2023-05-09
- Mac M1安装mnmp(Mac+Nginx+MySQL+PHP)开发环境 2023-06-03
- PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】 2023-02-13
- PHP排序算法之快速排序(Quick Sort)及其优化算法详解 2022-10-15
- 分析Composer实现自动加载原理 2023-06-12
- 在Laravel 的 Blade 模版中实现定义变量 2023-03-02