PHP数组遍历的几种常见方式总结


Posted in PHP onFebruary 15, 2019

本文实例讲述了PHP数组遍历的几种常见方式。分享给大家供大家参考,具体如下:

1、使用for循环遍历数组

conut($arr);用于统计数组元素的个数。
for循环只能用于遍历,纯索引数组!!!!
如果存在关联数组,count统计时会统计两种数组的总个数,使用for循环遍历混合数组,导致数组越界!!

eg:

$arr = array(1,2,3,5,6,7);
$num = count($arr); //count最好放到for外面,可以让函数只执行一次
echo "数组元素的个数{$num}<br/>";
for($i=0;$i<$num;$i++){
 echo "{$i}==>{$arr[$i]}<br/>";
}

2、forEach循环遍历数组

foreach可以遍历任何类型的数组!!!

eg:

$arr = array(1,2,3,"one"=>4,5,6,7);
foreach($arr as $value){
 echo "{$item}<br>";
}
foreach($arr as $key => $value){
 echo "{$key}==>{$item}<br>";
}

举个例子解析如下数组:

$h51701 = array(
 "group1"=>array(
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男")
 ),
 "group2"=>array(
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男")
 ),
 "group3"=>array(
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男"),
  array("name"=>"张三","age"=>14,"sex"=>"男")
 )
);
foreach ($h51701 as $key => $value) {
 echo "{$key}<br><br>";
 foreach ($value as $key1 => $value1) {
  echo "第".($key1+1)."个同学<br>";
  foreach ($value1 as $key2 => $value2) {
  echo "{$key2}==>{$value2}<br>";
  }
  echo "<br>";
 }
 echo "------------------------<br>";
}

使用list()、each()、while()遍历数组

(重点)list():用于将数组的每一个值,赋值给list函数的每一个参数。(list函数的参数,必须小于等于数组的元素个数);

eg:list($a,$b,$c)=[1,2,3];-->$a=1; $b=2; $c=3;

注意:
list()在解析数组时,只解析索引数组;
② list可以通过空参数,选择性的解析数组的值;

list($a,,$b)=[1,2,3];-->$a=1;  $b=3;

(重点)each():用于返回数组当前指针所在位的键值对!并将指针后移一位;

返回值:如果指针有下一位,返回一个数组。包含一个索引数组(0-键,1-值)和一个关联数组("key"-键,"value"-值);如果指针没有下一位,返回false;

eg:

each($arr) 返回数组或false;
② 把数组或false赋值给$a;
③ while判断$a如果是数组,继续执行下一次;

如果$a是false,终止循环

while($a = each($arr)){
 echo "{$a[0]}-->{$a[1]}<br>";
 echo "{$a['key']}-->{$a['value']}<br>";
}

3.使用list()/each()/while()配合遍历数组

while(list($key,$value) = each($arr)){
  echo "{$key}-->{$value}<br>";
}
reset($arr);

!!!!数组使用each()遍历完一遍后,指针使用处于最后一位的下一位;即再用each(),始终返回false;

如果还需使用,需用reset($arr);函数,重置数组指针;

eg:

$arr = array(1,2,3,"one"=>4,5,6,7);
foreach($arr as $value){
 echo "{$item}<br>";
}
foreach($arr as $key => $value){
 echo "{$key}==>{$item}<br>";
}
while(true){
  $a = each($arr);
 if($a){
  echo "{$a[0]}-->{$a[1]}<br>";
  echo "{$a['key']}-->{$a['value']}<br>";
 }else{
  break;
 }
}
while(list($key,$value) = each($arr)){
 echo "{$key}-->{$value}<br>";
}
reset($arr);
while(list($key,$value) = each($arr)){
 echo "{$key}-->{$value}<br>";
}

4、 使用数组指针遍历数组

next:将数组指针,后移一位。并返回后一位的值;没有返回false
prev:将数组指针,前移一位。并返回前一位的值;没有返回false
end:  将数组指针,移至最后一位,返回最后一位的值;空数组返回false
reset:将数组指针,恢复到第一位。并返回第一位的值;空数组返回false
key: 返回当前指针所在位的键;
current:返回当前指针所在位的值;

$arr = [1,2,3,4,"one"=>5];
while(true){
  echo key($arr);
  echo "--";
  echo current($arr);
 echo "<br>";
 if(!next($arr)){
  break;
  }
}
reset($arr);

第二种方式:

do{
  echo key($arr);
  echo "--";
  echo current($arr);
 echo "<br>";
}while(next($arr));
reset($arr);

牛刀小试:

1.遍历数组:

$subject1 = array("Linux","PHP","MySQL","HTML","CSS","JQuery")

方式一:for循环遍历

for($i=0;$i<count($subject1);$i++){
   echo $subject1[$i]."<br/>";
}

方式二:使用list()/each()/while()配合遍历数组

方式一.

while(list($key,$value)=each($subject1)){
 echo "{$key}-->{$value}<br/>";
}

方式二.

while($a=each($subject1)){
 echo $a[0]."=>".$a[1]."<br/>";
}

方式三:forEach循环遍历

foreach ($subject1 as $key => $value) {
  echo "{$key}-->{$value}<br/>";
}

方式四:指针

do{
  echo key($subject1)."=>".current($subject1)."<br/>";
}while(next($subject1));
echo "<br/>";

2.使用reset(),end(),prev(),next(),key(),current();与do…while组合倒着输出数组中的值:

$subject2 = array("Linux","PHP","MySQL","HTML","CSS","JQuery")
$subject2 = array("Linux","PHP","MySQL","HTML","CSS","JQuery");
end($subject2);
do{
  echo key($subject2)."=>".current($subject2)."<br>";
}while(prev($subject2));

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
拼音码表的生成
Oct 09 PHP
html中select语句读取mysql表中内容
Oct 09 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
PHP 开发环境配置(Zend Studio)
Apr 28 PHP
php正则表达式使用的详细介绍
Apr 27 PHP
php准确计算复活节日期的方法
Apr 18 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
Jul 25 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
Dec 02 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
什么是PHP文件?如何打开PHP文件?
Jun 27 PHP
PHP实现的获取文件mimes类型工具类示例
Apr 08 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
Oct 22 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
Feb 15 #PHP
PHP crypt()函数的用法讲解
Feb 15 #PHP
phpinfo无法显示的原因及解决办法
Feb 15 #PHP
实例介绍PHP中zip_open()函数用法
Feb 15 #PHP
PHP echo()函数讲解
Feb 15 #PHP
PHP crc32()函数讲解
Feb 14 #PHP
PHP count_chars()函数讲解
Feb 14 #PHP
You might like
php 生成饼图 三维饼图
2009/09/28 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
python3判断url链接是否为404的方法
2018/08/10 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
Python中collections模块的基本使用教程
2018/12/07 Python
python3 反射的四种基本方法解析
2019/08/26 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
Python通过文本和图片生成词云图
2020/05/21 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
财务会计应届生求职信
2013/11/24 职场文书
团队队名口号大全
2014/06/06 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
师德师风培训感言
2015/08/03 职场文书
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python