其它循环

上一节内容中,讲解了php中的循环,并且了解了for循环。for循环是php循环中的一种,在本节中继续讲解php循环:While循环、do…while循环、foreach 循环。

While循环

While循环和for循环类似,但是在它的圆括号中只填写循环执行的条件。
语法格式如下:

while (条件)
{要循环的代码;
}

查看以下代码示例:

<?php
$a=array("1","hello",12,"LiLei",13);
$i=0;
while ($i<count($a))
{echo $a[$i].'<br/>';
}
?>

以上代码示例中,定义了一个a数组变量,值为 "1","hello",12,"LiLei",13,随后定义了一个i变量,值为0。
接下来使用了while循环,在条件中,添加了 $i<count($a),用来判断当前i变量每循环一次是否已经大于了数组长度。随后每次循环都输出当前a数组的第i位置值。

查看完以上代码,我们发现,$i变量并没有进行增减,一直都是初始化时的值,为0。此时循环将会一直执行,成为死循环。要避免这种情况我们可以使$i 变量每循环一次就增加1,代码可以写为如下:

<?php
$a=array("1","hello",12,"LiLei",13);
$i=0;
while ($i<count($a))
{echo $a[$i].'<br/>';$i++;
}
?>

在循环的代码中,执行了$i++每次循环i变量加一。这样i值会有变化,在有限次数内会跳出循环。
最终结果如下:

do…while 循环

do…while循环是类型while的一种循环方式,查看以下do…while循环的语法:

do
{要执行的代码;
}
while (条件);

do…while 循环与while循环的不同是,do…while循环条件放在后面,while循环是在前面。这种方式方式有什么不同呢?请看以下示例:

<?php
$i=5;
do
{echo 'hello';$i++;
}while ($i<5);
?>

在以上的do…while循环中,while循环后的条件是 $i<5,但是变量i的值初始化定义的时候为5,条件是不成立的,那么循环是否会执行?查看以下结果:

循环指定了一次,输出了一个hello,随后就跳出循环。
do…while循环和while 循环的不同点在于,do…while循环不管条件成立与否都会执行一次循环,而while循环则会先判断条件随后再进行循环。两者先后顺序不一样。并且do…while循环需要在条件后打上分号,表示结束。

foreach 循环

foreach循环用于遍历数组,每次循环,数组的元素值就会赋值给一个变量。语法如下:

foreach (数组 as 指向的变量)
{循环的代码;
}

示例如下:

<?php
$a=array('1','aaaa',23,'daw');
foreach($a as $val){echo $val.'<br/>';
}
?>

以上代码中,定义了一个数组变量a,接下来使用foreach循环进行数组的遍历。
在foreach的圆括号中,代码为 $a as $val,释义为变量val指向数组a变量的元素,每次都指向下一个。例如第一次循环指向为’1’,第二次循环指向为’aaaa’,第三次以此类推。结果如下:

foreach循环变量键值对

foreach循环对键值对的遍历也是非常友好的。查看如下示例:

<?php
$a=array('name'=>'Xiaoming','age'=>23);
foreach($a as $key=>$val){echo $key.'=>'.$val.'<br/>';
}
?>

以上示例中,定义了一个键值对数组a,name是键,Xiaoming是值,其它值也是键值对。
使用foreach进行对a数组的遍历,在圆括号中 $a as $key=>$val,首先是需要遍历的数组 a,使用关键字as,之后是$key=>$val,表示键值对的一种关系,$key 是键 $val 是指,这两个变量名可以随意更改,并不是一定需要跟我所写的一致。
结果如下:


在键值对的数组中,也可以不设置键值对关系。例如示例:

<?php
$a=array('name'=>'Xiaoming','age'=>23,12,'ddd','sex'=>'nan',444);
foreach($a as $key=>$val){echo $key.'=>'.$val.'<br/>';
}
?>

以上数组中并不完全是设置的键值对。运行结果如下:

自定义键值对后,如果出现未定义键的数组元素,则会从0开始默认分配。

php基础教程 第八步循环补充相关推荐

  1. php基础教程 第七步数组补充及循环基础

    键值对 上一节中简单的了解了数组的定义.取值及存储,这一节补充一下上一节数组的内容. 在上一节中,我们知道索引是用来标记值的位置,通过索引可以取得当前位置的值.这种一个索引对应着一个值的关系是一个映射 ...

  2. php基础教程 第十一步 面向对象补充

    继承 上一节中学习了php类,以及类方法.类成员变量相关的一些知识,接下来开始学习php类中的继承.本节是上一节的补充.(其实也就是为了保持日更随便发的一篇文) 开始 php继承是继承与父类的所有属性 ...

  3. php基础教程 第十步 阶段性知识补充

    简 在php教程中前九步已经了解了php的一些基础知识.大多数人在了解完以上知识后脑子还是迷茫的,最多懂的一些我所讲解过的知识如何实现(对象为零基础读者),如何搭建一个网站还是不知晓.没关系,接下来我 ...

  4. php基础教程 第六步 学习数组以及条件判断switch补充

    条件语句 switch 在上一节的学习中,学习了php的条件语句if.在php编程中进行条件判断还可以使用switch语句.switch语句语法如下: <?php switch (值或表达式) ...

  5. Python基础教程:在for循环搭配else的陷阱,你知道吗?

    假设有如下代码: for i in range(10):if i == 5:print ('found it! i = %s' % i) else:print ('not found it ...') ...

  6. php基础教程 第四步 学习运算符

    在前面的章节中,以及了解了一些运算法,接下来再讲解一些常规运算法. + 加运算法,用来使左右两边的值或表达式进行加法计算.例如有一个变量$a,一个变量$b,它们的值都为9,$a+$b为9+9等于10. ...

  7. OpenGL ES基础教程,绘制三角形(补充,附代码)

    简介 OpenGL OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言.跨平台的编程接口规格的专业的图形程序接口.它用于三维图像(二维亦可),是一个功能强大,调用方 ...

  8. HTML5与CSS3基础教程第八版学习笔记7~10章

    第七章,CSS构造块 CSS里有控制基本格式的属性(font-size,color),有控制布局的属性(position,float),还有决定访问者打印时在哪里换页的打印控制元素.CSS还有很多控制 ...

  9. HTML5与CSS3基础教程第八版学习笔记16-21章

    第十六章,表单 HTML5引入了新的表单元素.输入类型和属性,以及内置的对必填字段.电子邮件地址.URL以及定制模式验证. 元素: <input type="email"&g ...

最新文章

  1. AI发展格局正从“数据”演变为“知识”
  2. 【算法】双指针算法 ( 双指针算法分类 | 相向双指针 | 有效回文串 )
  3. 跨域 || Jsonp
  4. GSON序列化时,日期格式问题处理
  5. IPv4数据报格式及其语义
  6. php layout布局文件,layout(布局) - jQuery EasyUI中文文档 - EasyUI中文站
  7. 将你一张表的值覆盖_山西联通携手华为完成长风商务区宏微协同,立体覆盖,打造5G精品网络...
  8. Web开发必学的8个网页优化技巧!
  9. pytorch yolov3 代码详解_PyTorch C++ libtorch的使用方法(1)-nightly 版本的 libtorch
  10. c 子类对象 访问父类对象受保护成员_面向对象三大特征: 继承
  11. [处理数据的心得][1]--相关矩阵的可视化
  12. c++ 指针(不断更新)
  13. FlashMX2004组件事件简单调试器
  14. utf8汉字编码对照表
  15. 手机端html怎么复制到剪贴板,移动端和pc端的复制到剪贴板功能
  16. 今年尾牙我们部门拍的搞笑短片,讲述项目开发的事~
  17. 英伟达服务器系统显卡驱动,NVIDIA显卡驱动
  18. 20200725 PAT甲级 7-2 The Judger (25分)
  19. 借助Amazon EMR与外部KDC进行身份认证,有效集成业务场景
  20. root格式化linux,Linux-格式化与检验-mkfs

热门文章

  1. 程序员过关斩将--错误的IOC和DI
  2. 分布式数字签名令牌TokenProvider
  3. 微软开源可扩展存储引擎Extensible Storage Engine
  4. 利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具
  5. 深入探究ASP.NET Core Startup的初始化
  6. 几个超级实用但很少人知道的 VS 技巧[更新]
  7. 微软开源基于 Envoy 的服务网格 Open Service Mesh
  8. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权
  9. Bumblebee微服务网关之Url重写
  10. .NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种?