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


Posted in PHP onNovember 17, 2021

在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 的值都是null

3、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种方式的文章就介绍到这了,更多相关PHP遍历数组方式内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
php上传文件,创建递归目录的实例代码
Oct 18 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
php ctype函数中文翻译和示例
Mar 21 PHP
WordPress网站性能优化指南
Nov 18 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
Nov 27 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
Nov 14 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
ThinkPHP实现附件上传功能
Apr 27 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
Mar 26 PHP
discuz论坛更换域名,详细文件修改步骤
Dec 09 PHP
关于PHP数组迭代器的使用方法实例
php双向队列实例讲解
Nov 17 #PHP
如何解决php-fpm启动不了问题
Nov 17 #PHP
一次项目中Thinkphp绕过禁用函数的实战记录
php修改word的实例方法
Nov 17 #PHP
PHP获取学生成绩的方法
Nov 17 #PHP
php去除deprecated的实例方法
Nov 17 #PHP
You might like
中国收音机工业发展史
2021/03/02 无线电
php UBB 解析实现代码
2011/11/27 PHP
将php数组输出html表格的方法
2014/02/24 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
js判断样式className同时增加class或删除class
2013/01/30 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
JS实现转动随机数抽奖特效代码
2020/04/16 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
微信小程序 后台登录(非微信账号)实例详解
2017/03/31 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
JavaScript生成图形验证码
2020/08/24 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
创建服务型党组织实施方案
2014/02/25 职场文书
给孩子的新年寄语
2014/04/08 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
2021/06/26 Python
Java面试题冲刺第十六天--消息队列
2021/08/07 面试题