设为首页收藏本站

安徽论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10212|回复: 0

PHP遍历数组的6种方式总结

[复制链接]

76

主题

0

回帖

240

积分

中级会员

Rank: 3Rank: 3

积分
240
发表于 2022-3-26 10:59:32 | 显示全部楼层 |阅读模式
网站内容均来自网络,本站只提供信息平台,如有侵权请联系删除,谢谢!
目录

在PHP的日常操作中,数组是最常出现的结构,而我们几乎每天都在处理数组相关的内容。那么问题来了,你一般怎么遍历并处理数组。

1、foreach


很熟悉吧,是不是你的最爱?
  1. $arr = ['a', 'b', 'c'];

  2. foreach ($arr as $key => $value) {
  3.     $arr[$key] = $value . '_i';
  4. }

  5. print_r($arr); // ['a_i', 'b_i', 'c_i'];
复制代码
2、array_map


使用匿名函数的方式,处理数组里的每个元素。遍历完成后返回一个新的数组
  1. $arr = ['a', 'b', 'c'];

  2. $arr = array_map(function ($item) {
  3.     return $item . '_i';
  4. }, $arr);

  5. print_r($arr); // ['a_i', 'b_i', 'c_i'];
复制代码
你可以同时处理多个数组
  1. $arr_1 = ['a', 'b', 'c'];
  2. $arr_2 = ['你', '好', '吗', '原', '罪'];
  3. // $arr_n = [...];

  4. $arr = array_map(function ($item_1, $item_2) {
  5.     return $item_1 . '_' . $item_2 . '_i';
  6. }, $arr_1, $arr_2);

  7. print_r($arr); // ['a_你_i', 'b_好_i', 'c_吗_i', '_原_i', '_罪_i']
复制代码
是的,遍历的次数以最长的数组为准。
遍历3次之后,$arr_1 其实是完成了的,所以之后 $item_1 的值都是null

3、array_walk


以引用传递的形式遍历你的数组,没有返回值,而且只能处理一个数组。
  1. $arr = ['a', 'b', 'c'];

  2. array_walk($arr, function (&$item) {
  3.     $item = $item . '_i';
  4. });

  5. print_r($arr); // ['a_i', 'b_i', 'c_i'];
复制代码
注意到 &$item 了吗,是的,多了个&,代表着你的形参是以引用传递接收数据的。你要做的就是想办法改变这个参数。
假如你处理的是二维数组,处理方式也是万变不离其宗的。
  1. $arr = [
  2.     ['name' => 'a'],
  3.     ['name' => 'b'],
  4.     ['name' => 'c']
  5. ];

  6. array_walk($arr, function (&$item) {
  7.     $item['name'] = $item['name'] . '_i';
  8. });

  9. print_r($arr); // [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];
复制代码
4、for


这应该是超级通用的语法了
  1. $arr = ['a', 'b', 'c'];

  2. for ($i = 0; $i < count($arr); ++$i) {
  3.     $arr[$i] = $arr[$i] . '_i';
  4. }

  5. print_r($arr); // ['a_i', 'b_i', 'c_i'];
复制代码
不推荐使用。它的效率比不上foreach。而且写法上比foreach略繁琐。

5、each


哈哈,这个函数在PHP7.2已经被废弃了@deprecated,而且感觉特别古老的书写方式。这种写法的执行效率也不行,新手应该直接放弃。
  1. $arr = ['a', 'b', 'c'];

  2. while (list($key, $value) = each($arr)) {
  3.     $arr[$key] = $value . '_i';
  4. }

  5. print_r($arr); // ['a_i', 'b_i', 'c_i'];
复制代码
6、reset


准确的讲并不止reset一个函数,需要组合多个内置函数,平常写代码基本是用不上的
  1. $arr = ['a', 'b', 'c'];
  2. // reset() 指针切换到头部,其实默认就是指向开头,可以忽略这句
  3. reset($arr);

  4. // current() 获取当前指针的元素值
  5. while ($value = current($arr)) {
  6.     // key() 获取当前指针的元素下标
  7.     $arr[key($arr)] = $value . '_i';
  8.     // next() 指针移到下一个
  9.     next($arr);
  10. }

  11. print_r($arr); // ['a_i', 'b_i', 'c_i'];
复制代码
总结

到此这篇关于PHP遍历数组的6种方式的文章就介绍到这了,更多相关PHP遍历数组方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
                                                        
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
免责声明
1. 本论坛所提供的信息均来自网络,本网站只提供平台服务,所有账号发表的言论与本网站无关。
2. 其他单位或个人在使用、转载或引用本文时,必须事先获得该帖子作者和本人的同意。
3. 本帖部分内容转载自其他媒体,但并不代表本人赞同其观点和对其真实性负责。
4. 如有侵权,请立即联系,本网站将及时删除相关内容。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表