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 相关文章推荐
基于mysql的论坛(7)
Oct 09 PHP
PHP循环语句笔记(foreach,list)
Nov 29 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
Sep 04 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
Jun 20 PHP
php去掉URL网址中带有PHPSESSID的配置方法
Jul 08 PHP
使用PHP如何实现高效安全的ftp服务器(一)
Dec 20 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
May 27 PHP
PHP微信分享开发详解
Jan 14 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
PHP 数组黑名单/白名单实例代码详解
Jun 04 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
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
2010/07/09 PHP
深入理解PHP中的global
2014/08/19 PHP
PHP写日志的实现方法
2014/11/05 PHP
PHP工程师VIM配置分享
2015/12/15 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
2017/04/05 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
javascript快速排序算法详解
2014/09/17 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
深入理解Node module模块
2018/03/26 Javascript
详解vue-router传参的两种方式
2018/09/10 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
Python实现模拟登录及表单提交的方法
2015/07/25 Python
Python函数返回不定数量的值方法
2019/01/22 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
python下载库的步骤方法
2019/10/12 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
奠基仪式主持词
2014/03/20 职场文书
团代会宣传工作方案
2014/05/08 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
python playwrigh框架入门安装使用
2022/07/23 Python