PHP中array_map与array_column之间的关系分析

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_maparray_column 函数都可以对数组中的所有元素进行处理。但是它们的使用场景有很大的区别。array_map 会对每个数组元素应用一个回调函数,返回的结果所形成的数组,而 array_column 只会返回指定 key 的元素,所以是提取数组中某一列的最佳方式,如果要同时对数组中的每个元素进行处理,请使用 array_map。实际上,array_column 可以看成是一种特殊的 array_map,其中键仅用于指定返回的列。

本文标题为:PHP中array_map与array_column之间的关系分析

基础教程推荐