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 相关文章推荐
在PHP3中实现SESSION的功能(一)
Oct 09 PHP
在命令行下运行PHP脚本[带参数]的方法
Jan 22 PHP
PHP无刷新上传文件实现代码
Sep 19 PHP
基于PHP生成静态页的实现方法
May 10 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
php中将数组转成字符串并保存到数据库中的函数代码
Sep 29 PHP
php在linux下检测mysql同步状态的方法
Jan 15 PHP
学习php设计模式 php实现桥梁模式(bridge)
Dec 07 PHP
深入理解PHP类的自动载入机制
Sep 16 PHP
php 实现Hash表功能实例详解
Nov 29 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
PHP验证码无法显示的原因及解决办法
Aug 11 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
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
php实现的生成排列算法示例
2019/07/25 PHP
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
JavaScript返回网页中超链接数量的方法
2015/04/03 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
python网络编程之读取网站根目录实例
2014/09/30 Python
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
ubuntu上安装python的实例方法
2019/09/30 Python
为什么是 Python -m
2020/06/19 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
汽车工程专业应届生求职信
2013/10/19 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
百日安全活动总结
2014/05/04 职场文书
产品包装策划方案
2014/05/18 职场文书
资产运营委托书范本
2014/10/16 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
理解深度学习之深度学习简介
2021/04/14 Python