PHP常见的数组遍历方式

摘要:
PHP常见的数组遍历方式在PHP开发中,数组是我们最用的PHP函数之一,并且对于数组函数的遍历方式也有很多种,如果我们熟悉PHP数组的遍历方式以及每种方式的优缺点,会让我们的程序优雅需求,不管是开发效率还是代码的执行效率上都会得到大大的提升。假如你处理的是二维数组,处理方式也是万变不离其宗的。从PHP4开始就引入了foreach结构,是PHP中专门为遍历数组而设计的语句,推荐大家使用。

PHP常见的数组遍历方式

在PHP开发中,数组是我们最用的PHP函数之一,并且对于数组函数的遍历方式也有很多种,如果我们熟悉PHP数组的遍历方式以及每种方式的优缺点,会让我们的程序优雅需求,不管是开发效率还是代码的执行效率上都会得到大大的提升。直线导轨滑台

1、foreach

这是我们最常见的遍历之一

$arr=['a','b','c'];

foreach($arras$key=>$val){
$newArr[]=$val;
}

print_r($newArr);//Array([0]=>a[1]=>b[2]=>c)

2、for

这应该是超级通用的语法了

$arr=['a','b','c'];
for($i=0;$i<count($arr);++$i){
$arr[$i]=$arr[$i];
}
print_r($arr);//Array([0]=>a[1]=>b[2]=>c)

不推荐使用。

它的效率比不上foreach。而且写法上比foreach略繁琐。

3、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

4、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']];

5、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'];

6、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'];

一、使用for语句循环遍历数组;

二、使用foreach语句遍历数组;

三、联合使用list()、each()和while循环遍历数组。

这三种方法中效率最高的是使用foreach语句遍历数组。从PHP4开始就引入了foreach结构,是PHP中专门为遍历数组而设计的语句,推荐大家使用。先分别介绍这几种方法。

免责声明:文章转载自《PHP常见的数组遍历方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇弹出框插件layer使用2021团体程序设计天梯赛 L2-2 病毒溯源下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

es6 解构赋值

ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 关于给变量赋值,传统的变量赋值是这样的: var arr = [1,2,3];//把数组的值分别赋给下面的变量; var a = arr[0]; var b = arr[1]; var c = arr[2];...

PHP类和对象函数实例详解

1. interface_exists、class_exists、method_exists和property_exists:       顾名思义,从以上几个函数的命名便可以猜出几分他们的功能。我想这也是我随着对PHP的深入学习而越来越喜欢这门编程语言的原因了吧。下面先给出他们的原型声明和简短说明,更多的还是直接看例子代码吧。bool interface...

idea中的后缀补全

IDEA有个很牛逼的功能,那就是后缀补全(Postfix Completion),这个功能可以通过后缀来使用代码补全进行模板式地补全语句,如遍历循环语句(for、foreach)、使用 String.format() 包裹一个字符串、使用类型转化包裹一个表达式、根据判(非)空或者其它判别语句生成 if 语句、用instanceOf生成分支判断语句等。 听起...

Delphi下使用指针的简单总结(指针的赋值,数组和指针的转换,函数指针的使用)

由于最近公司太忙,好久没有更新我的BLOG了。原来想着写写关于HOOK驱动的文章,可是最后想想好久已经没有做驱动的东西了,怕写出来有错误,于是作罢。开发游戏也有一段时间了,发现使用DELPHI来开发网络游戏不了解DELPHI下指针的使用是完全不行的。所以今天我简单总结以下我使用DELPHI指针的心得。希望对大家有所帮助。 记得在大学学习C语言的时候在谭浩强...

php -- 对象遍历

对象遍历:foreach,遍历对象的公有属性(将公有属性的值和属性名赋值给对应$value和$key) 遍历某一个属性的数组,实现Iterator接口 接口iterator:类实现Iterator接口 current:获取当前数组元素的值$this->hobby[$this->position] key:获取当前下标 next:数组指针下移 r...

PHP 出现 502 解决方案

nginx+php 出现502 bad gateway,一般这都不是nginx的问题,而是由于 fastcgi或者php的问题导致的,常见的有以下几种。 1.   php.ini 的memory_limit 过小(如果有个别php程序进程需要占用极大内存时这个必须注意) 2.   php-fpm.conf 中max_children或者max_reques...