当前所在位置: 首页 > 儿童教育 > 正文

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种方式的文章就介绍到这了,希望大家以后多多支持好二三四!

阅读全文
相关推荐

橘子洲旅游攻略 长沙橘子洲怎么玩

橘子洲旅游攻略 长沙橘子洲怎么玩
橘子洲是湘江中的一个冲击沙洲,四面环水绵延数十里,是国家重点风景名胜区。景区内有历史文化陈列馆、潇湘名人会所、柑橘文化园等景观,集观赏休闲娱乐于一体。在特定时间段,橘子洲烟火是一场绝不可错过的视觉盛宴。景区原面积约17公顷,其中开放区面积约6公顷,主要景点有洲头颂橘亭、汉白玉诗词碑、铜像广场、藤架广场、揽岳亭、枕江亭、盆景园、大门广场等。

西安周边旅游攻略 西安周边最值得去的地方

西安周边旅游攻略 西安周边最值得去的地方
1、华山风景名胜区:“华山论剑谁为峰,一见重阳道成空”,武侠小说为华山披上了浓厚的江湖色彩,同时华山用它的险峻向每一位前来攀登的游客发起挑战。整个华山拥有多达200余处景点,东峰的日出、西峰的峭壁、南峰的林木、北峰的云雾,每一处景色都独具魅力。打卡建议:在西峰乘坐索道上山,再从北峰乘坐索道下山,一天游玩下来大致需要6—8个小时,并且可以把景点都逛到。如果选择夜爬华山看日出的话,记得带一件厚一点的衣服,越往上爬山上越冷。还有记得爬山戴双手套,因为华山有些路段需要双脚并用才能攀登的上去。

毛坦厂中学万人雨中送考 毛坦厂送考头车车牌91666祝福考生

毛坦厂中学万人雨中送考 毛坦厂送考头车车牌91666祝福考生
六安市毛坦厂中学,简称“毛中”,位于安徽省六安市金安区毛坦厂镇,被称为“亚洲最大高考工厂”。每次送考时节也都会有万余名家长和当地居民前来送考,毛坦厂镇的万人送考成为当地乃至安徽省内的一个“高考景观”。  毛坦厂中学万人雨中送考  6月5日,安徽六安。今早7点半,毛坦厂中学送考车队又一次出发,考生

珠峰被救女子不愿支付全部救援费用 珠峰攀登者为救遇险女子放弃登顶

珠峰被救女子不愿支付全部救援费用 珠峰攀登者为救遇险女子放弃登顶
近日,湖南省登山队2名队员范江涛、谢如祥在距离登顶珠峰不到400米时,为救一名同中国籍的女子放弃登顶。此事引起网友广泛关注,网友纷纷为两人的义举支持点赞。但在成功救人后,被救女子的态度和表现,让两人倍感寒心。为请求救女子,他们当时允诺给夏尔巴向导1万美元,然而该女子事后只愿承担4000美元。

​登珠峰获救女子只愿承担4成救援费是怎么回事 登珠峰获救女子只愿承担4成救援费具体情况

​登珠峰获救女子只愿承担4成救援费是怎么回事 登珠峰获救女子只愿承担4成救援费具体情况
近日,湖南省登山队2名队员为救人放弃珠峰登顶计划引起热议。3日,有网友发布消息称:被救者只愿承担4成救援费。具体登珠峰获救女子只愿承担4成救援费是怎么回事?一起来了解登珠峰获救女子只愿承担4成救援费具体情况。登珠峰获救女子只愿承担4成救援费是怎么回事近日,湖南省登山队2名队员在距离登顶珠峰不到400

国内出现偏肺病毒感染 尚无治疗药物

国内出现偏肺病毒感染 尚无治疗药物
5月31日,据美国疾控中心(CDC)的呼吸道病毒监测系统显示,今年春季以来,人类偏肺病毒(HMPV)在美国各地区呈现高发态势,该病毒正肆虐美国各大医院的重症监护病房和儿科医院。  6月3日,某三甲医院感染控制中心主任医师告诉记者:“根据近几年国内零散报告,人偏肺病毒在呼吸道感染病人中确实是存在的

男子连吃100天麦当劳减重53斤是真的吗 男子连吃100天麦当劳为什么能减重53斤

男子连吃100天麦当劳减重53斤是真的吗 男子连吃100天麦当劳为什么能减重53斤
近日,据说美国一57岁男子通过连吃100天麦当劳的方式减肥,减了53斤。那么,男子连吃100天麦当劳减重53斤是真的吗?到底男子连吃100天麦当劳为什么能减重53斤?一起来了解具体情况。男子连吃100天麦当劳减重53斤是真的吗近日,据外媒报道,美国一名57岁男子通过连吃100天麦当劳的方式减肥,体重

本周狗屎运最旺的星座 本周狗屎运最旺的四大星座

本周狗屎运最旺的星座 本周狗屎运最旺的四大星座
本周(6.5-6.11)狗屎运最旺的星座TOP4如下:  TOP4:巨蟹座  金星冲冥王,巨蟹座走的狗屎运,可以说是超级大坨!不光是财运一飞冲天,主要事业运+学业运,迎来双运加速的爆发期!  TOP3:摩羯座  月亮六合水星,紧接着拱水星,摩羯运势仿佛踩上了蹦蹦床!正财运和偏财运,简直装备了跃迁

印度耗资百亿卢比的大桥又塌了是什么情况 印度耗资百亿卢比的大桥又塌了是为什么

印度耗资百亿卢比的大桥又塌了是什么情况 印度耗资百亿卢比的大桥又塌了是为什么
据印度媒体当地时间6月4日报道,印度比哈尔邦在建的横跨恒河的阿格瓦尼-苏丹甘吉大桥再次发生部分坍塌。据悉,此桥耗资百亿卢比。具体印度耗资百亿卢比的大桥又塌了是什么情况?到底印度耗资百亿卢比的大桥又塌了是为什么?一起来了解。印度耗资百亿卢比的大桥又塌了是什么情况据印度媒体6月5日报道,上周日下午6点左

一个村考出300多大学生6个北大 湖南一小村考上一本奖4000二本3000

一个村考出300多大学生6个北大 湖南一小村考上一本奖4000二本3000
一个村考出300多大学生6个北大是怎么回事?湖南一小村考上一本奖4000二本3000是什么情况?湖南益阳,爱屋湾村:一个让人自豪的地方,也是一个让人感动的地方。这个小村庄,历经数十年积淀,已经培养出了不少人才。据统计,爱屋湾村十年来累计奖励学生68名,其中有6人考上了北京大学,5人留学哈佛,其他
本文Tag