- 更改值:
array_map
可以时不能更改输入数组内的值array_walk
;特别是,array_map
永远不要更改其参数。
- 阵列键访问:
array_map
不能使用阵列键操作,array_walk
可以。
- 返回值:
array_map
返回一个新数组,array_walk
仅返回true
。因此,如果您不想由于遍历一个数组而创建一个数组,则应使用array_walk
。
- 迭代多个数组:
array_map
它还可以接收任意数量的数组,并且可以并行地对其进行迭代,而array_walk
只能在一个数组上进行操作。
- 将任意数据传递给回调:
array_walk
可以接收一个额外的任意参数以传递给回调。自PHP 5.3(引入匿名函数时)以来,这几乎无关紧要。
- 返回数组的长度:
- 得到的数组的
array_map
长度与最大输入数组的长度相同;array_walk
不返回数组,但同时不能更改原始数组的元素数;array_filter
根据过滤功能仅选择数组元素的子集。它确实保留了密钥。
- 得到的数组的
例:
<pre><?php$origarray1 = array(2.4, 2.6, 3.5);$origarray2 = array(2.4, 2.6, 3.5);print_r(array_map('floor', $origarray1)); // $origarray1 stays the same// changes $origarray2array_walk($origarray2, function (&$v, $k) { $v = floor($v); }); print_r($origarray2);// this is a more proper use of array_walkarray_walk($origarray1, function ($v, $k) { echo "$k => $v", "n"; });// array_map accepts several arraysprint_r( array_map(function ($a, $b) { return $a * $b; }, $origarray1, $origarray2));// select only elements that are > 2.5print_r( array_filter($origarray1, function ($a) { return $a > 2.5; }));?></pre>结果:
Array( [0] => 2 [1] => 2 [2] => 3)Array( [0] => 2 [1] => 2 [2] => 3)0 => 2.41 => 2.62 => 3.5Array( [0] => 4.8 [1] => 5.2 [2] => 10.5)Array( [1] => 2.6 [2] => 3.5)



