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 相关文章推荐
怎样在UNIX系统下安装php3
Oct 09 PHP
dedecms中显示数字验证码的修改方法
Mar 21 PHP
php下实现伪 url 的超简单方法[转]
Sep 24 PHP
使用php判断服务器是否支持Gzip压缩功能
Sep 24 PHP
phpnow php探针环境检测代码
Nov 04 PHP
php中使用sftp教程
Mar 30 PHP
PHP SplObjectStorage使用实例
May 12 PHP
php检查字符串中是否有外链的方法
Jul 29 PHP
php中通用的excel导出方法实例
Dec 30 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
php设计模式之单例模式用法经典示例分析
Sep 20 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 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
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
php树型类实例
2014/12/05 PHP
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
requireJS使用指南
2016/04/27 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
vue实现分页栏效果
2019/06/28 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
详解Python中的日志模块logging
2015/06/19 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
python 把列表转化为字符串的方法
2018/10/23 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
Python高级property属性用法实例分析
2019/11/19 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
德国网上超市:myTime.de
2019/08/26 全球购物
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
酒吧副总经理岗位职责
2013/12/10 职场文书
小学教师听课制度
2014/02/01 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
社区四风存在问题及整改措施
2014/10/26 职场文书
专业见习报告范文
2014/11/03 职场文书
写给同事的离职感言
2015/08/04 职场文书
股权投资协议书
2016/03/23 职场文书
MySQL窗口函数的具体使用
2021/11/17 MySQL