array_map函数用于将回调函数应用到数组每个元素并返回新数组,适合数据清洗、批量计算等场景,最佳时机是需非破坏性转换且代码意图明确时。

array_map
要使用
array_map
基本语法:
array_map(callable $callback, array $array1, array ...$arrays): array
$callback
null
array_map
$array1
...$arrays
示例:将数组中的每个数字平方
立即学习“PHP免费学习笔记(深入)”;
<?php
$numbers = [1, 2, 3, 4, 5];
// 使用匿名函数
$squaredNumbers = array_map(function($number) {
    return $number * $number;
}, $numbers);
print_r($squaredNumbers);
/*
输出:
Array
(
    [0] => 1
    [1] => 4
    [2] => 9
    [3] => 16
    [4] => 25
)
*/
// 使用箭头函数 (PHP 7.4+)
$cubedNumbers = array_map(fn($number) => $number * $number * $number, $numbers);
print_r($cubedNumbers);
/*
输出:
Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)
*/
// 使用内置函数
$stringNumbers = ['1', '2', '3'];
$intNumbers = array_map('intval', $stringNumbers);
print_r($intNumbers);
/*
输出:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
*/
?>示例:处理多个数组
当你传入多个数组时,回调函数会接收与数组数量相同数量的参数,每个参数对应每个数组在当前迭代中的元素。
<?php
$firstNames = ['John', 'Jane', 'Peter'];
$lastNames = ['Doe', 'Smith', 'Jones'];
$fullNames = array_map(function($firstName, $lastName) {
    return $firstName . ' ' . $lastName;
}, $firstNames, $lastNames);
print_r($fullNames);
/*
输出:
Array
(
    [0] => John Doe
    [1] => Jane Smith
    [2] => Peter Jones
)
*/
// 如果数组长度不一致,array_map 会以最短的数组为准
$shortNames = ['Alice', 'Bob'];
$combined = array_map(function($first, $last) {
    return $first . ' ' . $last;
}, $shortNames, $lastNames); // $lastNames 更长
print_r($combined);
/*
输出:
Array
(
    [0] => Alice Smith
    [1] => Bob Jones
)
*/
?>在我看来,
array_map
foreach
什么时候是最佳时机呢?
array_map('ucfirst', $names)array_map('intval', $stringNumbers)array_map(fn($price) => $price * 0.8, $prices)
array_column
array_map
array_map
array_map
总的来说,只要你的目标是对数组中的每个元素执行相同的操作,并且希望得到一个包含这些操作结果的新数组,那么
array_map
foreach
array_map
行为特点:
array_map
array_map($callback, $arrayA, $arrayB)
$callback
$arrayA
$arrayB
array_map
array_map
array_map
潜在陷阱:
数组长度不匹配导致的截断: 这是最常见的“坑”。如果你期望所有数组的元素都能被处理,但其中一个数组比其他数组短,那么长数组的末尾元素就会被悄无声息地忽略掉。在调试时,如果发现输出结果比预期少,首先就应该检查输入数组的长度。
<?php
$a = [1, 2, 3];
$b = ['x', 'y']; // 这个数组更短
$c = ['A', 'B', 'C', 'D'];
$result = array_map(function($valA, $valB, $valC) {
    return "{$valA}-{$valB}-{$valC}";
}, $a, $b, $c);
print_r($result);
/*
输出:
Array
(
    [0] => 1-x-A
    [1] => 2-y-B
)
// 3-?-C 和 3-?-D 被忽略了
*/
?>回调函数参数签名不匹配: 如果你传入了 N 个数组,但你的回调函数只定义了少于 N 个参数,那么 PHP 会发出警告(
Warning: array_map(): Argument #2 should be an array
Warning: array_map(): Argument #1 should be an array
null
非数组输入:
array_map
null
TypeError
null
null
array_map
<?php
$arr1 = [1, 2];
$arr2 = ['a', 'b'];
$arr3 = [true, false];
$merged = array_map(null, $arr1, $arr2, $arr3);
print_r($merged);
/*
输出:
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => a
            [2] => 1
        )
    [1] => Array
        (
            [0] => 2
            [1] => b
            [2] => 
        )
)
*/
?>这里需要注意,
true
1
false
了解这些特点和陷阱,能帮助你更安全、更有效地利用
array_map
绝对可以!这正是
array_map
array_map
array_map
与匿名函数(闭包)结合:
匿名函数在 PHP 5.3 引入,它允许你创建一个没有指定名称的函数,并将其作为变量传递。这对于
array_map
<?php
$prices = [100, 250, 50, 180];
$taxRate = 0.15; // 假设税率
// 计算含税价格
$pricesWithTax = array_map(function($price) use ($taxRate) {
    return $price * (1 + $taxRate);
}, $prices);
print_r($pricesWithTax);
/*
输出:
Array
(
    [0] => 115
    [1] => 287.5
    [2] => 57.5
    [3] => 207
)
*/
// 将字符串数组转换为大写
$names = ['alice', 'bob', 'charlie'];
$upperNames = array_map(function($name) {
    return strtoupper($name);
}, $names);
print_r($upperNames);
/*
输出:
Array
(
    [0] => ALICE
    [1] => BOB
    [2] => CHARLIE
)
*/
?>这里
use ($taxRate)
$taxRate
与箭头函数(PHP 7.4+)结合:
箭头函数是 PHP 7.4 引入的一种更简洁的匿名函数形式,特别适用于单行表达式的闭包。它们自动捕获外部作用域的变量,无需
use
<?php
$temperatures = [20, 25, 15, 30];
// 将摄氏度转换为华氏度:(C * 9/5) + 32
$fahrenheitTemps = array_map(fn($celsius) => ($celsius * 9/5) + 32, $temperatures);
print_r($fahrenheitTemps);
/*
输出:
Array
(
    [0] => 68
    [1] => 77
    [2] => 59
    [3] => 86
)
*/
// 结合多个数组,用箭头函数更简洁
$items = ['Apple', 'Banana', 'Orange'];
$quantities = [5, 3, 7];
$itemSummary = array_map(fn($item, $qty) => "{$item} ({$qty} units)", $items, $quantities);
print_r($itemSummary);
/*
输出:
Array
(
    [0] => Apple (5 units)
    [1] => Banana (3 units)
    [2] => Orange (7 units)
)
*/
?>总结:
无论是匿名函数还是箭头函数,它们与
array_map
以上就是PHP如何使用array_map函数_PHP array_map函数使用详解的详细内容,更多请关注php中文网其它相关文章!
                        
                        PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
                
                                
                                
                                
                                
                                
                                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号