3.10.2 对数组的每一个元素应用任何函数:array_walk()
有时候,读者可能希望以相同方式使用或者修改数组中的每一个元素。array_walk()函数允许进行这样的操作。函数array_walk()的原型如下所示:
其调用方法类似于前面所介绍的usort()函数的调用,array_walk()函数要求声明一个你自己的函数。正如你所看到的,array_walk()函数需要三个参数。第一个是arr,也就是需要处理的数组。第二个是func,也就是用户自定义并将作用于数组中每个元素的函数。第三个参数userdata是可选的,如果使用它,它可以作为一个参数传递给我们自己的函数。在接下来的内容,读者将了解这个函数是如何工作的。
这个用户自定义函数可以是一个以指定格式显示各个元素的函数。如下所示的代码通过在$array数组的每个元素中调用用户自定义的my_print()函数,从而将每个元素显示在一个新行中:
以上所编写的这个函数还需要有特定的符号。对于数组中的每个元素,array_walk将以关键字和保存在数组中的值为参数,此外,还可以以任何数据作为该函数的userdata参数。可以按如下方式调用函数:
在大多数情况下,函数只能处理数组中的值。但是,在某些情况下,可能还需要使用userdata参数向函数传递一个参数。在少数情况下,可能还需要对数组关键字和值进行处理。在MyPrint()函数中,可以忽略关键字参数和userdata参数。
在一个稍微复杂点的例子中,我们将编写一个带有一个参数的函数,这个函数可以用来修改数组的值。请注意,虽然我们对关键字并不感兴趣,但为了接收第三个参数变量,我们还是必须接收它:
在这里,我们定义了一个名为my_multiply()的函数,它可以用所提供的乘法因子去乘以数组中的每个元素。需要使用array_walk()函数的第三个参数来传递这个乘法因子。因为需要这个参数,所以在定义my_multiply()函数时必须带有三个参数—一个数组元素值($value)、一个数组元素的关键字($key)和参数($factor)。可以选择忽略这个关键字。
此外,还有一个需要注意的问题是传递参数$value的方式。在my_multiply()的函数定义中,变量前面的地址符(&)意味着$value是按引用方式传递的。按引用方式传递允许函数修改数组的内容。
我们将在第5章中详细介绍按引用方式的传递。如果你对这个术语还不太熟悉,那么现在就只需知道:为了使用引用传递,我们在变量名称前面加了一个地址符。
| 回书目 上一节 下一节 |
|
· 第六章 你能帮我吗?.. · Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. |
· 08年5月各大网上书店及.. · 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. |
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||