27岁,山西运城人,职业电商经理人,前端开发工作者,从事过网站建设、网络推广、SEO、SEM、信息流推广、二类电商、网络运维、软件开发,等相关电商工作,经验较为丰富,小米技术社区致力于为广大从事Web前端开发的人员提供一些力所能及的引导和帮助 ...[更多]
E-mail:mzze@163.com
Q Q:32362389
W X:xiaomi168527
27岁,山西运城人,职业电商经理人,网络工程师兼运维,从事过运营商网络建设,企业网络建设、优化。数据中心网络维护等通过,经验丰富,座右铭:当自己休息的时候,别忘了别人还在奔跑。 ...[更多]
大于花一样的年龄,河南郑州是我家,2010年在北京接触团购网,2011年进入天猫淘宝一待就是四年,如今已经将设计走向国际化(ps:误打误撞开始进入阿里巴巴国际站的设计,嘿嘿)五年电商设计,丰富经验,从事过天猫淘宝阿里各项设计,店铺运营,产品拍摄;我将我的经历与您分享是我的快乐!座右铭:越努力越幸运! ...[更多]
E-mail:97157726@qq.com
Q Q:97157726
for循环,while循环,do-while循环是PHP常用的循环方式,他们有如下特点:
(1)for、while、do-while可以相互替换
(2)什么时候用for循环?
如果明确知道循环多少次首先for循环,
(3)什么时候用while和dowhile循环?
如要要循环到条件不成立为止选while或do-while
先判断再执行选while,先执行再判断选do-while
while循环条件不成立就不执行,do-while至少执行一次
(4)foreach循环
foreach循环是用来遍历数组
(5)跳转语句break和continue在循环中的作用
break:中断循环
continue:中断当前循环,进入下一个循环
for(初始值;条件;增量){ //循环体 }
注意:循环中千万不能出现死循环
for循环支持多语句表达式
初始值、增量可以由多条语句组成
<?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 */
DEMO一:
<?php for($i=1;$i<=10;$i+=2){ echo "{$i}:床前明月光<br>"; } /* 1:床前明月光 3:床前明月光 5:床前明月光 7:床前明月光 9:床前明月光 */
DEMO二 不写增量死循环:
<?php for($i=1;$i<=10;){ } //死循环,$i永远等于1,1永远小于10,条件永远为true
DEMO三 不写条件死循环
<?php
for($i=1;;$i++){
}
//死循环,只要没有条件都是死循环
DEMO四 啥都不写死循环
<?php
for(;;){
}
//这是一个经典的死循环
1、如下代码循环了几次?
for($i=1;$i!=5;$i++){ } //循环了4次 1 2 3 4
2、在循环N次循环体中,初始值执行了几次?条件执行了几次?增量执行了几次?
初始值执行了1次
条件执行了N+1次
增量执行了N次
3、在循环执行完毕后,$i的值是存在的。
<?php for($i=1;$i<=3;$i++){ } echo $i; //4
语法:
while(条件){ } ------------------------- do{ }while(条件)
foreach循环是用来遍历数组
语法
//语法一 foreach(数组 as 值){ } //语法二 foreach(数组 as 键=>值){ }
DEMO:
<?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 */
php中除了do-while以外,其他的语法结构都有替代语法
规则:左大括号变冒号,右大括号变endXXX
//if的替代语法 if(): elseif(): else: endif; //switch替代语法 switch(): endswitch; //for for(): endfor; //while while(): endwhile; //foreach foreach(): endforeach;
DEMO1:在混编的时候用替代语法
<body> <?php for($i=1;$i<=10;$i++): if($i%2==0): ?> <?php echo $i;?>:锄禾日当午<br> <?php endif; endfor; ?> </body> //运行结果 2:锄禾日当午 4:锄禾日当午 6:锄禾日当午 8:锄禾日当午 10:锄禾日当午
DEMO2:可以通过替代语法证明else if之间如果有空格是嵌套if语句。(js中else if要带空格,而PHP必须连着写elseif,不连着写就是嵌套if语句)
<?php $score=80; if($score>=90): echo 'A'; elseif($score>=80): //elseif之间没有空格,如果有空格是嵌套if语句 echo 'B'; else: echo 'C'; endif; ---------------------------------------- <?php $score=80; if($score>=90): echo 'A'; else: if($score>=80): echo 'B'; else: echo 'C'; endif; endif;
语法
break:中断循环 continue:中断当前循环,进入下一个循环
DEMO1:break和continue的使用
<?php for($i=1; $i<=10; $i++) { if($i==5) break; //中断循环 echo "{$i}:锄禾日当午<br>"; } //结果 1:锄禾日当午 2:锄禾日当午 3:锄禾日当午 4:锄禾日当午 -------------------------------------------------- <?php for($i=1; $i<=10; $i++) { if($i==5) continue; //跳出5,进入6循环 echo "{$i}:锄禾日当午<br>"; } 1:锄禾日当午 2:锄禾日当午 3:锄禾日当午 4:锄禾日当午 //注意,没有打印第5句 6:锄禾日当午 7:锄禾日当午 8:锄禾日当午 9:锄禾日当午 10:锄禾日当午
DEMO2:break和continue中断多重循环
break和continue默认中断、跳出1重循环,如果调中断、跳出多重循环,在后面加一个数字。
//例1 <?php for($i=1; $i<=10; $i++) { for($j=1;$j<=$i;$j++){ echo $j.' '; if($j==5){ break 2; //中断2重循环 } } echo '<br>'; } //运行结果 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 //例2 <?php for($i=1; $i<=10; $i++) { switch($i){ case 5: break 2; } echo $i,'<br>'; } //结果 1 2 3 4 //switch的本质是循环了一次的循环
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、结合++前置和++后置考虑逻辑
双重循环demo:
1.打印阶梯数字
<?php for($i=1;$i<=9;$i++){ //循环行 for($j=1;$j<=$i;$j++){ //循环列 echo $j,' '; } 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>
for循环demo1:通过for循环将数组中值求和、求平均值
<?php //1、求数组的和、平均值 $num=[1,20,53,23,14,12,15]; $sum=0; for($i=0,$n=count($num);$i<$n;$i++){ $sum+=$num[$i]; } echo '和是:'.$sum,'<br>'; //和是:138 echo '平均值:'.number_format($sum/count($num),1); //精确到小数点后面1位 平均值:19.7 echo '<hr>';
for循环demo2:数组翻转
$stu=['tom','berry','ketty','rose','jake']; for($i=0,$j=count($stu)-1;$i<$j;$i++,$j--){ [$stu[$i],$stu[$j]]=[$stu[$j],$stu[$i]]; //元素交换 } print_r($stu); //Array ( [0] => jake [1] => rose [2] => ketty [3] => berry [4] => tom )
for循环demo3:遍历二维数组
$stu=[ [1,2,3,4], [10,20,30,40] ]; for($i=0;$i<count($stu);$i++){ //循环第一列 for($j=0;$j<count($stu[$i]);$j++){ //循环第二列 echo $stu[$i][$j],' '; } echo '<br>'; } //运行结果 1 2 3 4 10 20 30 40
for循环demo4:循环输出1-100,其中3的倍数输出A,5的倍数输出B,15输出C。
注意顺序
for($i=1; $i<=100; $i++) { if($i%15==0) //先写%15,,因为可以%15的值一定可以%3和%5 echo 'C'; elseif($i%3==0) echo 'A'; elseif($i%5==0) echo 'B'; else echo $i; echo ' '; }
本站内容均为小米原创,转载请注明出处:小米技术社区>> PHP的for循环 while循环、do-while循环、foreach循环,它们的使用场景?