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

PHP函数使用技巧:如何使用array_map()函数对数组中的每个元素进行操作

发布时间:2023-06-17 10:12:31

在 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 编程效率。