PHP array_map:如何修改所有数组元素

702 阅读2分钟

array_map()函数有助于根据一些用户特定的条件直接修改一个或多个数组的所有元素。

PHP array_map

array_map()是一个内置的PHP函数,它将一个数组的每个值发送给用户定义的函数,并将用户定义的函数给出的新值返回数组。 array_map()函数将一个数组的每个值发送给用户定义的函数,然后得到一个由用户定义的函数应用新值的数组,它 使用回调给定数组的元素。

语法

PHP array_map函数的语法如下。

array_map(myfunction,array1,array2,array3...)

参数

myfunction 参数是必须的,它是用户定义的函数的名称。

array1参数是必填参数,它指定了一个数组。

array2 array3 是可选参数,它也指定了数组。

返回值

在对每个数组应用用户自定义函数后,它返回一个包含数组1的值的数组。

例子

请看下面的例子:

<?php

// app.php

function square($x)
{
  return($x * $x);
}
$arrA = array(19, 21, 46, 29);
$arrO = array_map("square",$arrA);
print_r($arrO);

我们定义了一个数组,然后将该数组传递给array_map 函数,该函数返回数组中所有项目的平方,并以该值形成一个新的数组。

上述代码的输出是所有项目的平方, 请看下面的输出:

PHP Array Map Example

使用array_map()创建一个数组的数组

我们也可以在PHP中使用array_map()函数来创建一个数组的数组。

如果我们想这样做,我们必须传递null作为参数 代替functionName参数和创建数组的列表。请看下面的例子。

<?php

// app.php

$arrA = array(19, 21, 46, 29);
$arrB = array('K', 'K', 'A', 'V');
$arrO = array_map(null, $arrA, $arrB);
print_r($arrO);

其输出结果如下:

Creating an array of arrays using array_map()

PHP array_map() 使用多个数组

你可以取三个数组,把这些数组传给array_map 函数,然后看输出结果:

<?php

// app.php

function subtractAdd($a, $b, $c) {
  return $a - $b + $c;
}

$arrA = array(19, 21, 46, 29);
$arrB = array(18, 19, 20, 21);
$arrC = array(1, 2, 26, 8);
$arrO = array_map("subtractAdd", $arrA, $arrB, $arrC);
print_r($arrO);

其输出结果如下:

The array_map() Using Multiple Arrays

带有字符串键的PHP array_map()

你可以把关联数组传给array_map() 函数并看到输出:

<?php

// app.php

function stormBreaker($a) {
  return $a."***".$a;
}

$arrA = ["name" => "Krunal", "age" => 26 ];
$arrO = array_map("stormBreaker", $arrA);
print_r($arrO);

输出结果如下:

The array_map() with string keys

使用lambda函数的PHP array_map()

Lambda函数意味着它没有名字。请看下面的例子:

<?php

// app.php

$func = function($value) {
  return $value * 2;
};

print_r(array_map($func, range(1, 5)));

我们使用$func 作为lambda函数和range() 函数来提供1到5之间的值。请看下面的输出:

array_map() using a lambda function

最后,PHP数组地图实例| array_map()函数教程结束。

array_map(), array_walk()和array_filter()的区别

array_map、array_walk和array_filter之间到底有什么区别?好吧,请看下面的答案。

改变数值。

array_map()函数不能改变输入数组内的值,而array_walk()可以;特别是array_map()函数从不改变其参数。

数组键的访问。

array_map()函数不能对数组键进行操作,而array_walk()函数可以。

返回值。

array_map()函数返回新的数组,array_walk()函数只返回true。

因此,如果你不想创建由遍历一个数组产生的数组,你应该使用array_walk()函数。

遍历多个数组。

array_map()函数也可以接收任意数量的数组;它可以并行地迭代它们,而array_walk()函数只对一个数组进行操作。

传递任意的数据给回调。

PHP array_walk()函数可以接收额外的任意参数来传递给回调。但是,从 PHP 5.3 开始,这就不重要了。

返回数组的长度。

array_map()函数产生的数组与最大输入数组的长度相同;array_walk()函数不返回数组,但同时,它不能改变原始数组的元素数。

PHP array_filter()函数只根据一个过滤函数挑选一个数组元素的子集。然而,它确实保留了键值。

本教程就到此为止。

相关文章

PHP array_keys()

PHP array_push()

PHP array_pop()

PHP array_shift()