1.2 循环

1.2.1 for

for(初始值;条件;增量){
//循环体
}

注意:循环中千万不能出现死循环

思考:如下代码输出什么

例题一:

<?php
for($i=1;$i<=10;$i+=2){
echo "{$i}:锄禾日当午<br>";
}
/*
1:锄禾日当午
3:锄禾日当午
5:锄禾日当午
7:锄禾日当午
9:锄禾日当午
*/

例题二:

<?php
for($i=1;$i<=10;){

}
//死循环,$i永远等于1,1永远小于10,条件永远为true

例题三

<?php
for($i=1;;$i++){
}
//死循环,只要没有条件都是死循环

例题四

<?php
for(;;){
}
//这是一个经典的死循环

1.2.3 思考题

1、如下代码循环了几次?

for($i=1;$i!=5;$i++){

}
//循环了4次

2、在循环N次循环体中,初始值执行了几次?条件执行了几次?增量执行了几次?

初始值执行了1次
条件执行了N+1次
增量执行了N次

3、在循环执行完毕后,$i的值是存在的。

<?php
for($i=1;$i<=3;$i++){
}
echo $i; //4

1.2.4 while、do-while

语法

while(条件){
}
-------------------------
do{

}while(条件)

小结:

1、for、while、do-while可以相互替换

2、如果明确知道循环多少次首先for循环,如要要循环到条件不成立为止选while或do-while

3、先判断再执行选while,先执行再判断选do-while

4、while循环条件不成立就不执行,do-while至少执行一次

1.2.5 例题

1、使用三种循环实现从1加到100

<?php
//1、for循环实现
$sum=0;
for($i=1;$i<=100;$i++){
$sum+=$i; //$sum=$sum+$i;
}
echo $sum;

//分析
/**
*
$i $sum
1 1
2 1+2
3 1+2+3
4 1+2+3+4
...
100 1+2+3+++100
*/
-------------------------------------------------
//2、while循环
$i=1;
$sum=0; //保存和
while($i<=100){
//方法一
/*
$sum+=$i;
$i++;
*/

//方法二
$sum+=$i++;
}
echo $sum;
--------------------------------------------------

//3、do-while循环
$i=1;
$sum=0;
do{
$sum+=$i;
$i++;
}while($i<=100);
echo $sum,'<br>'; //5050

//可以有如下更改
$i=1;
$sum=0;
do{
$sum+=$i++; //++后置
}while($i<=100);
echo $sum,'<br>'; //5050

//可以做如下更改
$i=1;
$sum=0;
do{
$sum+=$i;
}while(++$i<=100); //++前置
echo $sum,'<br>'; //5050

小结:

1、for、while、do-while可以相互替换

2、结合++前置和++后置考虑逻辑

1.2.6 多语句表达式

初始值、增量可以由多条语句组成

例题:数字分解

<?php
for($i=1,$j=9;$i<=$j;$i++,$j--){
echo "10可以分成{$i}和{$j}<br>";
}
//运行结果
/*
10可以分成1和9
10可以分成2和8
10可以分成3和7
10可以分成4和6
10可以分成5和5
*/

小结:初始值、增量可以写多个表达式,但是条件一般只写一个,如果条件写多个,只是最后一个条件起作用

1.2.7 双重循环

1、打印阶梯数字

<?php
for($i=1;$i<=9;$i++){ //循环行
for($j=1;$j<=$i;$j++){ //循环列
echo $j,'&nbsp;';
}
echo '<br>';
}
//运行结果
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9

2、打印九九乘法表

<style type="text/css">
table{
width:980px;
}
table,td{
border:solid 1px #0000FF;
border-collapse:collapse;
}
td{
height:40px;
}
</style>

<table>
<?php
for($i=1;$i<=9;$i++){ //行
echo '<tr>';
for($j=1;$j<=$i;$j++){ //列
echo "<td>{$j}*{$i}=".($j*$i).'</td>';
}
echo '</tr>';
}
?>
</table>

运行结果

PHP-循环_i++

小结:规则:当前列*当前行

1.28 foreach

foreach循环是用来遍历数组

语法

//语法一
foreach(数组 as 值){
}
//语法二
foreach(数组 as 键=>值){
}

例题

<?php
$stu=['tom','berry','ketty'];
foreach($stu as $v){
echo $v,'<br>';
}
/**
tom
berry
ketty
*/
echo '<hr>';
-----------------------------------------------------------
foreach($stu as $k=>$v){
echo "{$k}:{$v}<br>";
}
/**
0:tom
1:berry
2:ketty
*/