前言
计算机最擅长功能之一就是按规定的条件重复执行某些操作,循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构。循环结构可以看成一个条件判断语句和一个向回转向语句的组合。其特点是,在给定的条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。在PHP中提供了while,do-while和for三种循环。这三种循环可以用来处理同一问题,一般情况下他们可以互相替换。常用的三种循环结构学习的重点在于弄清楚它们的相同与不同之处。以便在不同的场合下使用。这就需要清楚三种循环的格式和执行顺序,将每种循环的流程图解透彻后就会明白如何替换使用。例如:把while循环的例题用for循环语句重新编写一个程序,这样能更好的理解它们的作用。
特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成为死循环,这是初学者易犯的常见错误,所以使用循环时一定要有一个停止的条件。根据循环停止条件的不同,在PHP中提供了两种类型的循环语句。
- 一种是计数循环语句,通常使用for循环语句完成
- 另一种是条件型循环语句,通常使用while或者do...while..循环语句完成
计数循环语句是指按指定的次数执行循环.比如:我们要打印100份的文档,我们在打印机设置好打印100份,没打1份,打印机就计数一次累加1;反复打印一百次就结束.所谓的条件型循环语句是指遇到特定的条件才停止循环,循环的次数是不固定的.这就好比我拿来一沓纸,放到打印机上,我不知道几张,打完为止,具体该循环多少次是不知道的,并不是固定的
while循环语句
while语句也称为while循环,是PHP中最简单的循环类型.与if语句相同,while语句也需要设定一个布尔类型条件,当条件为真时,他不断地执行一个语句块,直到条件为假就停止循环(跳出或结束循环)。if语句只执行后续代码一次,而while循环中只要条件为真,就会不断地执行后续代码。while循环通常用于控制循环次数未知的循环结构。while循环语法格式如下:
while(表达式){ //声明while语句 语句块;//循环体,但表达式的值为true时,进入循环体内,执行里面的语句 }
while语句中"表达式"的计算结果一定要是布尔型的true值或false值,如果是其他类型的值也会自动转换为布尔类型的值。通常这个表达式是使用比较运算符或者逻辑运算符计算后的值。‘语句块’是一条语句或者一条复合语句(代码块)。当while语句控制执行一条语句时可以加花括号“{}”,也可以不加。如果是多条语句的代码块,那就一定要使用花括号“{}”括起来,才能一起被while语句控制执行,程序执行到while语句后,要养成好习惯不惯是一条还是多条语句都加上花括号“{}”,避免由于未加括号产生错误,将发生以下事件:
- 计算表达式的值,确定是true还是false
- 如果表达式的值为false,while语句将结束,然后执行while语句之后的语句。有时,如果while表达式的值一开始就是false,则循环语句,每一次都不会执行
- 如果表达式的值为true,则执行while语句控制的语句块
- 返回到第1步执行
编程实践
我们通过实例来了解while的基本用法。以下例子将执行10输出语句。虽然while循环通常用于控制循环次数未知的循环结构,但也可以使用计数的方式控制循环执行次数。
$i=1; while($i<=10){ echo"这是第" . $i . "次输出结果<br>"; $i++; }
执行结果:
while语句与if语句一样也可以多成嵌套,通常是在有矩阵形式的输出时使用。例如,输出10行10列的数字时,就可以使用两层循环嵌套,内存的循环执行一次输出一个数字,连续执行10则输出一行数据。外层循环执行一次,则内层循环就执行10次输出一行(10列),外层循环执行10次,则输出10行,共输出100个数字。
$i=0; while($i<10){ $j=0; while($j<10){ echo ($i*10+$j) . ","; $j++; } echo"<br>"; $i++; }
执行结果:
while语句还可嵌套多层,如果没有必要,最好不要超过3层或以上。因为循环层次过多,那么循环次数会成倍增长,会影响PHP执行的效率。如果需要输出10个一样的数字矩阵,只需要在上面的代码中的外层循环的外面再加上一层10次的循环即可。这样循环的此时将变成1000次。
我们还可以使用循环计算数列的数字累加:比如计算1-100的数字的和,在数学中我们都知道使用高斯的求和(和=(首项+末项)×项数/2)公式来进行求解,现在我们用循环来求解该如何做呢?
$i=1; $sum=0; while($i<=100){ $sum=$sum+$i; $i++; } echo$sum;
执行结果: