您现在的位置是:群英 > 开发技术 > 编程语言
常见的PHP遍历数组方式有多少,怎么实现
Admin发表于 2022-09-24 17:23:42404 次浏览
今天这篇给大家分享的知识是“常见的PHP遍历数组方式有多少,怎么实现”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,因此分享发大家做个参考,下文的讲解详细,步骤过程清晰,希望这篇“常见的PHP遍历数组方式有多少,怎么实现”文章能帮助大家解决问题。

在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遍历数组方式有多少,怎么实现的介绍啦,需要的朋友可以参考上述内容,希望对大家有帮助,想要了解更多,欢迎关注群英网络,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: php
相关信息推荐
2022-07-04 17:14:52 
摘要:需要在Go写的服务里面调用命令行或者批处理,并根据返回的结果做处理。但是windows下面用cmd返回中文会出现乱码,本文就详细的介绍一下解决方法,感兴趣的可以了解一下
2022-12-12 11:21:52 
摘要:php文字水印中文乱码的解决办法:1、找到Windows系统上对应的字体;2、将搜索到的字体文件上传到服务器上;3、通过“yum -y install ttmkfdir”安装字体;4、通过“fc-cache”刷新字体缓存即可。
2021-12-04 17:46:28 
摘要:python调用函数有括号没括号的不同在哪?其实python调用函数加括号和不加括号是有一定的区别的,具体区别在哪,接下来我们通过示例代码来了具体分析看看。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部