用法
- array_filter() — 使用回调函数过滤数组的元素(重点在过滤)
- array_map() - 为数组的每个元素应用回调函数(重点在遍历数组后,返回一个新数组)
- array_walk() - 使用用户自定义函数对数组中的每个元素做回调处理(重点在对数组每个元素做操作)
区别
- array_filter() 和 array_walk()对一个数组进行操作,数组在前,函数在后
- array_map() 可以处理多个数组,因此函数在前,数组在后,可以根据实际情况放入多个数组参数
array_filter
array_filter — 使用回调函数过滤数组的元素(重点在过滤)
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
https://www.php.net/manual/zh/function.array-filter.php
遍历 array 数组中的每个值,并将每个值传递给 callback 回调函数。 如果 callback 回调函数返回 true,则将 array 数组中的当前值返回到结果 array 数组中。
返回结果 array 数组的键名(下标)会维持不变,如果 array 参数是索引数组,返回的结果 array 数组键名(下标)可能会不连续。 可以使用 array_values() 函数对数组重新索引。
//$mode默认值为 0 ,只传递值作为 callback 回调的唯一参数。
array_filter($array, function ($v) {
});
//ARRAY_FILTER_USE_KEY - 将键名作为 callback 回调的唯一参数
array_filter($array, function ($k) {
}, ARRAY_FILTER_USE_KEY);
//ARRAY_FILTER_USE_BOTH - 将值和键都作为参数传递给 callback 回调
array_filter($array, function ($v, $k) {
}, ARRAY_FILTER_USE_BOTH);
array_walk
array_walk() - 使用用户自定义函数对数组中的每个元素做回调处理(重点在对数组每个元素做操作)
array_walk(array|object &$array, callable $callback, mixed $arg = null): bool
https://www.php.net/manual/zh/function.array-walk.php
//将用户自定义函数 callback 应用到 array 数组中的每个单元。
array_walk($array, function (&$v, $k) {
});
array_map
array_map() - 为数组的每个元素应用回调函数(重点在遍历数组后,返回一个新数组)
array_map(?callable $callback, array $array, array ...$arrays): array
https://www.php.net/manual/zh/function.array-map.php
array_map() 返回一个 array,包含将 array 的相应值作为回调的参数顺序调用 callback 后的结果(如果提供了更多数组,还会利用 arrays 传入)。callback 函数形参的数量必须匹配 array_map() 实参中数组的数量。多余的实参数组将会被忽略。如果提供的实参数组的数量不足,将抛出 ArgumentCountError。
$func = function(int $value): int {
return $value * 2;
};
print_r(array_map($func, range(1, 5)));
// 或者从 PHP 7.4.0 起:
print_r(array_map(fn($value): int => $value * 2, range(1, 5)));
//返回:
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
[4] => 10
)
版权属于:大卫科技Blog
本文链接:https://www.iyuu.cn/archives/490/
转载时须注明出处