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 相关文章推荐
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
网站防止被刷票的一些思路与方法
Jan 08 PHP
PHP遍历数组的三种方法及效率对比分析
Feb 12 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
Jul 14 PHP
php封装的smarty类完整实例
Oct 19 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
PHP网页安全认证的实例详解
Sep 28 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 PHP
Yii框架连表查询操作示例
Sep 06 PHP
php实现微信和支付宝支付的示例代码
Aug 11 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
ThinkPHP之N方法实例详解
2014/06/20 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
设定php简写功能的方法
2019/11/28 PHP
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
jquery验证表单中的单选与多选实例
2013/08/18 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
简单介绍Python中的JSON模块
2015/04/08 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
python argparse传入布尔参数false不生效的解决
2020/04/20 Python
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
厂长助理岗位职责
2013/12/27 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL