当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/534801.html

相关文章:

  • 数据仓库和商务智能:洞察数据,驱动决策
  • Vue设计模式到底多少种?
  • HTML 属性
  • oracle如何查询历史最大进程数?
  • SpringBoot单机模式,能否支持一万用户请求并发?
  • [前端]CRX持久化
  • 模型 替身决策
  • 【系统架构设计师】体系结构文档化
  • Python Pandas(5):Pandas Excel 文件操作
  • 区块链技术:Facebook 重塑社交媒体信任的新篇章
  • 跨平台App开发,有哪些编程语言和工具,比较一下优劣势?
  • Windows逆向工程入门之汇编环境搭建
  • 网络安全溯源 思路 网络安全原理
  • 《Peephole LSTM:窥视孔连接如何开启性能提升之门》
  • viem库
  • Iceberg and AIStor 的Lakehouse Architecture 权威指南
  • TCP/IP 协议图解 | TCP 协议详解 | IP 协议详解
  • 第四节 docker基础之---dockerfile部署JDK
  • Arcgis/GeoScene API for JavaScript 三维场景底图网格设为透明
  • 基于javaweb的SpringBoot电影推荐系统
  • 【kafka系列】Topic 与 Partition
  • 大数据项目2:基于hadoop的电影推荐和分析系统设计和实现
  • [笔记] 汇编杂记(持续更新)
  • 同步阻塞IO和多路复用IO(epoll)的性能对比
  • 前端 CSS 动态设置样式::class、:style 等技巧详解
  • qt widget和qml界面集成到一起
  • BUU30 [网鼎杯 2018]Fakebook1
  • 信息科技伦理与道德3-2:智能决策
  • 《代码随想录第二十八天》——回溯算法理论基础、组合问题、组合总和III、电话号码的字母组合
  • PromptSource官方文档翻译