PHP函数使用技巧:如何使用array_map()函数对数组中的每个元素进行操作
在 PHP 中,array_map() 函数是一个强大实用的函数,它可以对数组中的每个元素进行操作,并返回一个新数组。如果您需要对数组中的每个元素进行相同的操作,array_map() 函数就是一个非常好的选择。在本文中,我们将学习如何使用 array_map() 函数对数组中的每个元素进行操作。
array_map() 函数是什么?
array_map() 函数是PHP中的内置函数之一,它可以将数组中的每一个元素依次传递给一个自定义函数,然后将函数返回值组成一个新的数组返回。简单来说,array_map() 函数将传入的函数应用于一个或多个数组的每个元素,返回一个新数组,新数组包含所有数组中原元素经过处理后的新值。
array_map() 函数的语法
array_map(callback,array1,array2 …)
callback:必需。规定要为每个元素调用的函数。每个元素将被传递到该函数,该函数将返回新元素的值。
array1:必需。规定一个或多个数组,这些数组中的元素将被传递到回调函数。
array2…:可选。规定一个或多个数组,如果您想用更多的数组来处理,就必须用更多的arrayX参数。参数数目可以任意。
对于 array1、array2…,它们的长度可以不同,但最终返回的数组将以长度最短的数组为准。
array_map() 函数的返回值
array_map() 函数返回一个新数组,新数组的元素是所有数组中元素经过处理后的新值,数组的键值保持不变。
示例:
$arr1 = array('1',2,'abc');
$arr2 = array('apple','pear','banana');
$new_arr = array_map(
function($a,$b){return $a.':'.$b;},
$arr1,
$arr2);
var_dump($new_arr);
输出如下:
array(3) {
[0]=>
string(6) "1:apple"
[1]=>
string(7) "2:pear"
[2]=>
string(8) "abc:banana"
}
解释:在上面的示例中,我们构造了两个数组 $arr1 和 $arr2 ,分别包含数字和字符串。通过 array_map() 函数对两个数组的元素进行处理,将他们合并在一起同时添加一个“:”符号,返回一个新的数组 $new_arr 。$new_arr 数组的元素是由 $arr1 和 $arr2 中的元素合并而成,并加上了冒号“:” 。
array_map() 函数使用技巧:
1.将每个数组中的元素相加求和
我们可以使用 array_map() 函数将两个数组中的元素依次相加,并将结果放在一个新数组中:
示例:
$arr1 = array(1,2,3,4,5);
$arr2 = array(5,4,3,2,1);
$sum_arr = array_map(function($a,$b){return $a+$b;},$arr1,$arr2);
var_dump($sum_arr);
输出如下:
array(5) {
[0]=>
int(6)
[1]=>
int(6)
[2]=>
int(6)
[3]=>
int(6)
[4]=>
int(6)
}
解释:在本例中,我们创建两个数组 $arr1 和 $arr2 ,然后使用 array_map() 函数对两个数组中的元素进行操作,对应的相加求和,并将结果保存在新数组 $sum_arr 中。
2.对数组中的元素求平方
我们可以使用 array_map() 函数将数组中的每个元素依次平方,并将结果存入新数组中:
示例:
$arr = array(1,2,3,4,5);
$square_arr = array_map(function($val){return $val*$val;},$arr);
var_dump($square_arr);
输出如下:
array(5) {
[0]=>
int(1)
[1]=>
int(4)
[2]=>
int(9)
[3]=>
int(16)
[4]=>
int(25)
}
解释:上面的代码中,我们定义了一个数组 $arr,包含一些数字。然后使用 array_map() 函数对 $arr 数组中的每个元素依次进行平方操作,并将结果保存在 $square_arr 数组中。
3.将字符串转换为数组
如果您想将一个字符串转化为数组,可以使用 array_map() 函数,将每个字符拆分出来,放入新数组中:
示例:
$str = 'abcdefg';
$arr = array_map('strval', str_split($str));
var_dump($arr);
输出如下:
array(7) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "d"
[4]=>
string(1) "e"
[5]=>
string(1) "f"
[6]=>
string(1) "g"
}
解释:上面的代码中,我们将一个字符串 $str 分割成为一个新数组,然后将每个字符作为一个新数组元素返回。
4.将一个数组中的元素转换为二维数组
您可以使用 array_map() 函数将一个数组中的元素转换为二维数组,即将每个元素都打包在一个包含五个元素的数组中:
示例:
$arr = array('php', 'javascript', 'java', 'python', 'ruby');
$new_arr = array_map(
function($item){return array($item, 1,2,3,4);}, $arr);
var_dump($new_arr);
输出如下:
array(5) {
[0]=>
array(5) {
[0]=>
string(3) "php"
[1]=>
int(1)
[2]=>
int(2)
[3]=>
int(3)
[4]=>
int(4)
}
[1]=>
array(5) {
[0]=>
string(10) "javascript"
[1]=>
int(1)
[2]=>
int(2)
[3]=>
int(3)
[4]=>
int(4)
}
[2]=>
array(5) {
[0]=>
string(4) "java"
[1]=>
int(1)
[2]=>
int(2)
[3]=>
int(3)
[4]=>
int(4)
}
[3]=>
array(5) {
[0]=>
string(6) "python"
[1]=>
int(1)
[2]=>
int(2)
[3]=>
int(3)
[4]=>
int(4)
}
[4]=>
array(5) {
[0]=>
string(4) "ruby"
[1]=>
int(1)
[2]=>
int(2)
[3]=>
int(3)
[4]=>
int(4)
}
}
解释:上面的代码中,我们创建了一个一维数组 $arr,包含几个字符串。然后使用 array_map() 函数将每个数组元素打包到一个包含 5 个元素的数组中,其中第一个元素是原数组的元素,其余的元素取常量1,2,3 和 4作为值,最终返回一个新的二维数组。
总结:
array_map() 可以让我们对数组中的每个元素进行操作,并将其结果保存到一个新数组中。这个函数非常灵活,可以与 PHP 中的许多函数结合使用,例如 array_sum()、array_filter() 和 preg_replace()。因此,掌握使用 array_map() 函数对数组中的每个元素进行操作的技巧,将极大地提高您的 PHP 编程效率。
