流程控制之循环
For循环
说明:循环就是自动执行某段代码、循环执行
语法:for(变量初始化;条件表达式’变量变化){
循环体;
}
- 变量初始化:循环的开始,给一个循环的变量,如$i=1;
- 条件表达式:必须给循环一个可以退出的条件,否则就是死循环。如$i<=10;
- 变量变化:让初始化的值发生改变,一直到达到条件为止。$i<=10;
流程控制图:
案例:1
输出1-100
<?php
for($i=1; $i<=100;$i++){
echo $i.'<br>’;//打印结果1-100并且换行
}
?>
案例:2
输出99乘法表
//分析:首先九九乘法表是由九行九列组成,先打印九行
For($i=1;$i<10;$i++){echo $i;}这是打印九行
根据外循环控制行数,内循环控制列数,那么打印九列就是在九for循环中再套一层for循环即for($i=1;$i<=9;$i++){
For($j=1;$j<=9;$j++){
Echo “$i x $j =”.$i*$j.’ ’;
}
echo “<br>”;
}打印出来的是一个9行9列的矩形,但是我们的乘法表是一个递减的三角形,行数不变列数逐渐递减,内部循环控制列数,也就是$j控制的表达式不是一直是9,我们可以看出第一行的时候只有一列,第二行的时候只有两列,直到第9行的时候有9列,从而可以分析出,行数和列数的增加的基数是一样的,就可以判定$j的取值范围就是$j<=$i
即:
for($i=1;$i<=9;$i++){
For($j=1;$j<=$i;$j++){
Echo “$i x $j =”.$i*$j.’ ’;
}
echo “<br>”;
}
看出$i和$j位置反了,换一下位置即可
把Echo “$i x $j =”.$i*$j.’ ’;
换成Echo “$jx $i =”.$i*$j.’ ’;
<?php
for($i=1;$i<=9;$i++){
For($j=1;$j<=$i;$j++){
Echo “$j x $i =”.$i*$j.’ ’;
}
echo “<br>”;
}
?>
案例2:打印金字塔
//打印金字塔
for($i=1; $i<=6; $i++){
for($a=6; $a>$i; $a–){
echo “ ”;
}
for($j=1; $j<=$i; $j++){
echo ‘* ’;
}
echo ‘<br>’;
}
案例3打印空心菱形
实战案例1
一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)。反过来,一张纸对折几次后,就超过1米厚了?
$p=0.01/1000;//把毫米换成米 for($i=1; $i<=30; $i++){ $p=$p*2; echo "对折{$i}次后的厚度为{$p}<br>"; //判断当厚度超过1m后的次数 if($p>=1&&$p<2){ echo '<hr>'; echo '对折第'.$i.'次后的厚度超过1m'; echo '<hr>'; } }
实战案例2
写一个程序输出1到100这些数字。但是遇到数字为3的倍数的时候,输出“三”替代数字,为5的倍数用“五”代替,既是3的倍数又是5的倍数则输出“三五”。
for($i=1;$i<=100;$i++){ if($i%3==0&&$i%5==0){ echo '三五'; }elseif($i%3==0){ echo '三'; }elseif($i%5==0){ echo'五'; }else{ echo $i; } echo '<br>'; }
while循环
语法:变量的初始值;
while(条件表达式){
循环体;
变量的变化;
}
循环1-100
<?php $i=1; while($i<=100){ echo $i; $i++; } ?>
<?php $i=1; while($i<=9){ $j=1; while($j<=$i){ echo"$j x $i = ".$j*$i; $j++; } echo '<br>'; $i++; } ?>
假设某人有100,000现金。每经过一次路口需要进行一次交费。交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000。请写一程序计算此人可以经过多少次这个路口。
$m=100000; $k=1; while($m>=5000){ if($m>50000){ $m=$m*0.95; }elseif($m<=50000){ $m=$m-5000; } echo '剩余'.$m.'经过'.$k.'<br>'; $k++; }
评论前必须登录!
注册