欢迎访问宙启技术站
智能推送

PHP中的array_map函数及其用法

发布时间:2023-06-01 18:27:20

在PHP中,数组操作是一个非常重要的方面。数组常见的操作就是对数组元素进行处理。PHP中array_map函数就是用来对数组元素进行处理的一种方法。

array_map函数的用法

array_map函数 个参数是function,表示对数组元素进行处理的函数。第二个参数是数组,表示要处理的数组。

用法格式为:array array_map ( callable $function , array $array1 [, array $...] )

示例代码如下:

$array=array(1,2,3,4,5);
function square($n) {
    return $n * $n;
}
$result = array_map('square', $array);
print_r($result);

输出结果:

Array
(
    [0] => 1
    [1] => 4
    [2] => 9
    [3] => 16
    [4] => 25
)

上面的例子中,我们定义了一个数组$array,用array_map函数调用square函数对数组元素进行处理,并将结果存储在$result数组中。

在这个例子中, square()函数接收一个参数 $n ,并返回它的平方。array_map()使用square()处理$array数组,返回一个新数组包含 $array 中每个元素的平方值。

array_map函数可以接受多个数组作为参数,如果提供给它的数组参数不等长,并且没有设置默认值,那么它会将所有数组中的元素按照顺序进行匹配和处理。

示例代码如下:

$array1=array(1,2,3,4,5);
$array2=array(6,7,8,9,10);
function multiply($n1,$n2) {
    return $n1 * $n2;
}
$result = array_map('multiply', $array1, $array2);
print_r($result);

输出结果:

Array
(
    [0] => 6
    [1] => 14
    [2] => 24
    [3] => 36
    [4] => 50
)

在这个例子中,我们定义了两个数组$array1和$array2,用array_map函数调用multiply函数对两个数组中相同下标的元素进行处理,并将结果存储在$result数组中。

在这个例子中, multiply()函数接收两个参数 $n1 和 $n2 ,并返回它们的乘积。array_map()使用multiply()处理$array1和$array2数组,返回一个新数组包含它们之间每个元素相乘的结果。

array_map函数的回调函数

array_map函数的 个参数必须是函数名或者是一个可调用对象,可以是任何类型的函数,包括匿名函数。

array_map函数中的回调函数可以通过一个字符串来表示。例如,我们可以声明一个函数。

function foo ($value) {
    return $value * 2;
}

$numbers = array(1, 2, 3, 4, 5);
$result = array_map('foo', $numbers);
print_r($result);

输出结果:

Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)

在上面的例子中,我们声明了一个名为 foo 的函数,它接受一个参数 $value ,并返回它的两倍。然后我们将 foo 函数传递给 array_map() 函数,它将使用 foo 函数处理 $numbers 数组中的每个元素。

在array_map函数中回调函数也可以是匿名函数。例如:

$numbers = array(1, 2, 3, 4, 5);
$result = array_map(function($value) {
    return $value * 2;
}, $numbers);
print_r($result);

输出结果:

Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)

在这个例子中,我们使用了一个匿名函数来代替 foo 函数,并将它传递给了 array_map() 函数。

array_map函数的特殊情况处理

如果在数组处理期间出现了特殊情况,例如 数组为空或者没有传递任何参数, array_map() 函数会返回一个空数组。

$array = [];
$result = array_map('sqrt', $array);
print_r($result);

输出结果:

Array
(
)

在这个例子中,我们传递了一个空数组给 array_map() 函数,并使用 sqrt 函数处理它的元素,但是因为数组为空,所以最终结果也为空。

array_map函数也可以处理带有key的数组。例如:

$array = array(
    'name' => '张三',
    'age' => 30,
    'sex' => '男'
);

function uc_text($text) {
    return ucwords($text);
}

$result = array_map('uc_text', $array);
print_r($result);

输出结果:

Array
(
    [name] => 张三
    [age] => 30
    [sex] => 男
)

在这个例子中,我们声明了一个名为 uc_text 的函数,它接收一个参数 $text ,并将 $text 变量中的每个单词首字母大写。接着,我们将 $array 数组传递给 array_map() 函数,并将 uc_text 函数用于数组的每个元素。

总结

array_map() 函数可以非常便捷地对数组元素进行处理。它接收一个回调函数,该函数作用于数组的每个元素并返回新的值,将新值存储在一个新的数组中。 如果您需要对数组中的每个元素进行某种操作,该函数就非常有用。