array_walk. array_map. array_filter

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 中的偶数元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值