PHP遍历数组的6种方式总结
2022-11-15 canyinms.com 【 字体:大 中 小 】
目录
1、foreach
2、array_map
3、array_walk
4、for
5、each
6、reset
在PHP的日常操作中,数组是最常出现的结构,而我们几乎每天都在处理数组相关的内容。那么问题来了,你一般怎么遍历并处理数组。
1、foreach很熟悉吧,是不是你的最爱?
$arr = ['a', 'b', 'c']; foreach ($arr as $key => $value) { $arr[$key] = $value . '_i'; } print_r($arr); // ['a_i', 'b_i', 'c_i'];2、array_map
使用匿名函数的方式,处理数组里的每个元素。遍历完成后返回一个新的数组
$arr = ['a', 'b', 'c']; $arr = array_map(function ($item) { return $item . '_i'; }, $arr); print_r($arr); // ['a_i', 'b_i', 'c_i'];
你可以同时处理多个数组
$arr_1 = ['a', 'b', 'c']; $arr_2 = ['你', '好', '吗', '原', '罪']; // $arr_n = [...]; $arr = array_map(function ($item_1, $item_2) { return $item_1 . '_' . $item_2 . '_i'; }, $arr_1, $arr_2); print_r($arr); // ['a_你_i', 'b_好_i', 'c_吗_i', '_原_i', '_罪_i']
是的,遍历的次数以最长的数组为准。
遍历3次之后,$arr_1 其实是完成了的,所以之后 $item_1 的值都是null3、array_walk
以引用传递的形式遍历你的数组,没有返回值,而且只能处理一个数组。
$arr = ['a', 'b', 'c']; array_walk($arr, function (&$item) { $item = $item . '_i'; }); print_r($arr); // ['a_i', 'b_i', 'c_i'];
注意到 &$item 了吗,是的,多了个&,代表着你的形参是以引用传递接收数据的。你要做的就是想办法改变这个参数。
假如你处理的是二维数组,处理方式也是万变不离其宗的。
$arr = [ ['name' => 'a'], ['name' => 'b'], ['name' => 'c'] ]; array_walk($arr, function (&$item) { $item['name'] = $item['name'] . '_i'; }); print_r($arr); // [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];4、for
这应该是超级通用的语法了
$arr = ['a', 'b', 'c']; for ($i = 0; $i < count($arr); ++$i) { $arr[$i] = $arr[$i] . '_i'; } print_r($arr); // ['a_i', 'b_i', 'c_i'];
不推荐使用。它的效率比不上foreach。而且写法上比foreach略繁琐。
5、each哈哈,这个函数在PHP7.2已经被废弃了@deprecated,而且感觉特别古老的书写方式。这种写法的执行效率也不行,新手应该直接放弃。
$arr = ['a', 'b', 'c']; while (list($key, $value) = each($arr)) { $arr[$key] = $value . '_i'; } print_r($arr); // ['a_i', 'b_i', 'c_i'];6、reset
准确的讲并不止reset一个函数,需要组合多个内置函数,平常写代码基本是用不上的
$arr = ['a', 'b', 'c']; // reset() 指针切换到头部,其实默认就是指向开头,可以忽略这句 reset($arr); // current() 获取当前指针的元素值 while ($value = current($arr)) { // key() 获取当前指针的元素下标 $arr[key($arr)] = $value . '_i'; // next() 指针移到下一个 next($arr); } print_r($arr); // ['a_i', 'b_i', 'c_i'];总结
到此这篇关于PHP遍历数组的6种方式的文章就介绍到这了,希望大家以后多多支持好二三四!
猜你喜欢
2023年高考需注意这些事项 注意事项有哪些?
2023年高考时间是几月几日 全国高考什么时候?
高考倒计时1天 几号开始高考?
晋江8个考点实行交通管制 此举有何意义?
高考生哪六样东西千万别发朋友圈?
黑龙江高考2023时间安排表 黑龙江高考是全国几卷?
《教育资源免费送!开学季大放送》
小学教育,如何激发孩子学习兴趣?
了解最新职业培训趋势,掌握未来就业机会!
教如何填报高考志愿
橘子洲旅游攻略 长沙橘子洲怎么玩
西安周边旅游攻略 西安周边最值得去的地方
毛坦厂中学万人雨中送考 毛坦厂送考头车车牌91666祝福考生
珠峰被救女子不愿支付全部救援费用 珠峰攀登者为救遇险女子放弃登顶
登珠峰获救女子只愿承担4成救援费是怎么回事 登珠峰获救女子只愿承担4成救援费具体情况
国内出现偏肺病毒感染 尚无治疗药物
男子连吃100天麦当劳减重53斤是真的吗 男子连吃100天麦当劳为什么能减重53斤
本周狗屎运最旺的星座 本周狗屎运最旺的四大星座
印度耗资百亿卢比的大桥又塌了是什么情况 印度耗资百亿卢比的大桥又塌了是为什么
一个村考出300多大学生6个北大 湖南一小村考上一本奖4000二本3000