1. array_walk
函数
array_walk
用于遍历数组并对每个元素执行回调函数。它不会受到数组内部指针位置的影响,会遍历整个数组。回调函数接收的前两个参数分别是元素的值和键名,如果有第三个参数,则数组所有的值都共用这个参数。
示例代码:
<?php
$arr = array("apple" => 10, "banana" => 20, "cherry" => 30);
function printElement($value, $key) {
echo "Key: $key, Value: $value<br>";
}
array_walk($arr, "printElement");
?>
上述代码定义了一个数组 $arr
,然后定义了一个回调函数 printElement
,该函数用于打印数组的键和值。最后使用 array_walk
函数遍历数组 $arr
,并对每个元素执行 printElement
回调函数。
如果想要在回调函数中修改数组元素的值,回调函数的第一个参数必须是引用,示例如下:
<?php
$arr = array(1, 2, 3);
array_walk($arr, function(&$v) {
$v *= 2;
});
print_r($arr);
?>
上述代码通过 array_walk
遍历数组 $arr
,在回调函数中通过引用修改每个元素的值(将每个元素乘以 2),最终 $arr
数组中的元素都会变为原来的 2 倍。
2. array_map
函数
array_map
用回调函数处理数组中的各个元素,返回一个新的数组,原数组不变。它可以一次性处理多个数组,但数组的数量应该与回调函数的参数保持一致。
示例 1:处理单个数组
<?php
$arr = array(1, 2, 3);
$newArr = array_map(function($val) {
return $val * $val;
}, $arr);
print_r($newArr);
?>
上述代码定义了一个数组 $arr
,然后使用 array_map
函数对数组 $arr
中的每个元素执行回调函数,该回调函数将每个元素进行平方运算,最后返回一个新的数组 $newArr
。
示例 2:处理多个数组
<?php
$arr1 = array(1, 2, 3);
$arr2 = array(4, 5, 6);
$newArr = array_map(function($a, $b) {
return $a + $b;
}, $arr1, $arr2);
print_r($newArr);
?>
上述代码定义了两个数组 $arr1
和 $arr2
,回调函数接收两个参数,分别对应两个数组中的元素,回调函数将两个数组对应位置的元素相加,最后返回一个新的数组 $newArr
。
3. array_filter
函数
array_filter
用回调函数处理数组中的各个元素,重点在于过滤数组元素。当处理到一个元素时,如果回调函数返回 false
,那么这个元素将会从结果数组中被过滤掉,原数组不变,结果数组保持原来的索引。
示例代码:
<?php
$arr = array(1, 2, 3, 4, 5);
$newArr = array_filter($arr, function($val) {
return $val % 2 == 0;
});
print_r($newArr);
?>
上述代码定义了一个数组 $arr
,然后使用 array_filter
函数对数组 $arr
进行过滤,回调函数判断元素是否为偶数,如果是偶数则返回 true
,该元素会被保留在结果数组 $newArr
中,最终 $newArr
中只包含 $arr
中的偶数元素。