php学习之流程控制之循环
流程控制之循环
For循环
说明:循环就是自动执行某段代码、循环执行
语法:for(变量初始化;条件表达式’变量变化){
循环体;
}
变量初始化:循环的开始,给一个循环的变量,如$i=1;条件表达式:必须给循环一个可以退出的条件,否则就是死循环。如$i<=10;变量变化:让初始化的值发生改变,一直到达到条件为止。$i<=10;
流程控制图:
案例:1
输出1-100
for($i=1; $i<=100;$i++){
echo $i.'
’;//打印结果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 “
”;
}打印出来的是一个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 “
”;
}
看出$i和$j位置反了,换一下位置即可
把Echo “$i x $j =”.$i*$j.’ ’;
换成Echo “$jx $i =”.$i*$j.’ ’;
for($i=1;$i<=9;$i++){
For($j=1;$j<=$i;$j++){
Echo “$j x $i =”.$i*$j.’ ’;
}
echo “
”;
}
?>
案例2:打印金字塔
//打印金字塔
for($i=1; $i<=6; $i++){
for($a=6; $a>$i; $a–){
echo “ ”;
}
for($j=1; $j<=$i; $j++){
echo ‘* ’;
}
echo ‘
’;
}
案例3打印空心菱形
echo ‘
’;//打印空心菱形for($i=1; $i<=6; $i++){for($a=1; $a<=6-$i; $a++){echo “ ”;}for($j=1; $j<=$i*2-1; $j++){if($i==1){echo ‘*’;}elseif($j==1||$j==$i*2-1){echo ‘*’;}else{echo ‘ ’;}}echo ‘
’;}for($i=5; $i>=1; $i–){for($a=1; $a<=6-$i; $a++){echo “ ”;}for($j=1; $j<=$i*2-1; $j++){if($i==1){echo ‘*’;}elseif($j==1 || $j==$i*2-1){echo ‘*’;}else{echo “ ”;}}echo ‘
’;}
实战案例1
一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)。反过来,一张纸对折几次后,就超过1米厚了?
$p=0.01/1000;//把毫米换成米for($i=1; $i<=30; p="">=1&&$p<2){echo '
';echo '对折第'.$i.'次后的厚度超过1m';echo '
';}}
实战案例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 '
';}
while循环
语法:变量的初始值;
while(条件表达式){
循环体;
变量的变化;
}
循环1-100
案例2:99乘法表
实战案例1
假设某人有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.'
';$k++;}