1
2
3
4
5
6
7
8
9
10
11

流程控制語句

發(fā)布時(shí)間:2017-為術07-20 07:56   志錯 發(fā)布人:毛書朋   機事 浏覽次數:7322

PHP的流程控制之分支語句

PHP的流程控制之循環語句

關聯課件:4子項目四 - 流程控制語句(點擊在線下明預覽)


4.3.5  流程控制語句

     又黑  幾乎在所有的編程語言中,程序都(dōu)由3種(zhǒng)老短基本的結構組成(chéng),即順序結習暗構、分支結構和循環結構。

      &nbs說習p;程序是由若幹語句組成(chéng)的,如果拿朋程序中語句的執行順序是從上到下依次逐句執行的,那麼(me)這(zhè)個動舞程序的結構就(jiù)是順序結構,在這(zhè)種(zhǒng)結構中沒(民理méi)有分支和反複,這(zhè)自好也是最簡單、最常見的流程結構,這(zhè)裡(lǐ)就(jiù)電訊不再過(guò)多地讨論。

    &nb妹術sp;  PHP中提供了4條流程控制語句來實現分如妹支結構和循環結構。

      ①外件if…else…   &那放nbsp;     &nb笑為sp;  條件語句

      ②swi光在tch    &她師nbsp;  &nbs河房p;     子湖;   低北;   分內道支選擇語句

    &nb和房sp; ③do…while…   &nb看也sp;   循環語句

     喝如; ④for    &n金道bsp;     化司;  &nbs月小p;     &nb煙站sp;      循環離地語句

      此外PHP還(h音哥ái)提供了break語句和continue語句,用以跳能書出分支結構或循環結構,下面(m為行iàn)對(duì)這(zhè)些語句逐一進離廠(jìn)行詳細的介紹。


4.3.5.1  分支控制語句 化新;


一、if…else…語句

    &nbs愛音p;  if…else…語句共有3種(zhǒng)基本結構,此外每種器輛(zhǒng)基本結構還(hái)可以嵌套另外兩(liǎng)種(zhǒ車外ng)結構,而且還(hái)允許多公自級嵌套。

      從國1. 隻有if的語句

      這(zhè山下)種(zhǒng)結構可以當作單純的判斷,可解釋成(chéng)“若某條件成是科(chéng)立則去做什麼(me)事(shì)情”,其語法如冷熱下:

if(expr){

      高遠;      stateme林民nt

}

       其中的exp科火r爲判斷的條件表達式,通常都(dōu)爲金美比較表達式或邏輯表達式,而sta城腦tement表示符合條件時(shí)森數執行的語句,若statemen會讀t所代表的語句隻有一行,可以省略大括号{}個討。如果expr爲真,則執行statement語句歌身或語句體。


2.if…else…語句

    &放紅nbsp;這(zhè)種(zhǒng)結構可呢做解釋成(chéng)“若某條件成(chéng)立則去做什麼(me)事年上(shì)情,否則去做另一件事(shì)情”,其語法如下:

if(expr){

   &n唱公bsp;  &nb理日sp;   技厭  statement1

}else{

     用窗       s短校tatement2

}

      如果expr爲真,則明我執行statement1語句或語句體,否間熱則執行statement2語句或語句體。


3. 包含else if的語句

     前面(miàn)的吃計兩(liǎng)種(zhǒng)分支結構隻能(néng)實現二路作門分支,用包含else if的語句則可以實現多路分支,其語法如下:

if(expr1){

       內科     statemen暗民t1

}

else if(expr2){

   &n日可bsp;   &n美雪bsp;    stateme鄉土nt2

}

else if…

else{

statementn

}

      當expr1爲真時(笑計shí),執行statement1語句或語句體,否則轉入expr2你紅的判斷,如果expr2爲真,則得銀執行statement2語句或語句體,依此這師類推,如果所有的expr表達式都(dōu)不爲真,則執行s門影tatementn語句或語句體。

      程序4-18.php爲if…答微else…語句應用示例.

<!--文件4-18.p算兒hp:if…else…的應用--購月>
<HTML>
<HEAD&黑什gt;
   &nbs但信p;<TITLE>if…else…的電月應用</TITLE>
</HEAD>
<兒場BODY>
    <我爸;?php
   &nbs男一p;    高子//本程序測試時(shí),請更改測試服務器的系統時(shí)間訊坐查看效果
    &nbs店女p;   echo&喝數nbsp;"今天是:".da看報te("D")."物土<br>";
 &nb匠視sp;     &nbs愛畫p;if (date("D&q司說uot;)=="Sat")
  志子     &n腦房bsp;    echo老北 "周末了,服裡我們要去狂歡。<br>";和制
     &n城銀bsp;  if (date(&qu頻相ot;D")=="Sat"){
 &n南作bsp;    &nbs作兒p;     ec樂服ho "再次聲明,周末了文讀,我們要去狂歡,好(hǎo)高興!<br>"店放;;
   &nbs海微p;    }間資else{
 &nb說器sp;     也從;   &nb訊這sp; echo "今天不是計的周末,我們要學(xué)習PHP&得輛nbsp;5,多麼(me)有意兵內義啊!^_^!!!<br>";
  大坐   &好綠nbsp;  }
  &n計的bsp;  &nbs鐵些p;  if (date("D&舞光quot;)=="Sun&q兵學uot;){
   &nbs作店p;      內請;  echo "今天是星很理期天。";
    &nbs理北p;   }去個
     &nb秒關sp;  多理else if (date("D"報農)=="Mon&quo遠低t;){
     &很票nbsp;  吃從    頻草echo "今天是星期一。";月錢
    &nbs錢子p;   }
   光用;     else&n草電bsp;if (date("D章很")=="Tue"){
  煙一     機中;    店少 echo "今天是星期二低做。";
 &nb動就sp;  &弟白nbsp;   }
 &nbs新錢p;   &nb票如sp;  else if&錯線nbsp;(date("D"業醫;)=="Wed&q你街uot;){
    &影工nbsp;     高好;  echo "今天是星期三。&q相習uot;;
 &nbs資輛p;  &都錯nbsp;   }
&動月nbsp;     &n裡道bsp; else if匠花 (date("D")=="紙購;Thu"){
   &nbs這紅p;   &綠日nbsp;   人黑 echo "今天是星期四。";玩在
   &但北nbsp;  &nb鐵熱sp; }
    &美長nbsp;   電鐵;else if&nb銀道sp;(date("D")=="Fri去農"){
 &知好nbsp;     &nbs友也p;    e高腦cho "今天是間頻星期五。";
 &開了nbsp; &nbs金間p;    }
 &nb員什sp;   &道們nbsp;  else{
 &nb們笑sp;   &nbs相區p;    &冷暗nbsp; echo 哥下"今天是星期六(隻可能(néng)是為哥星期六了^_^)。";
   畫男     }
 會懂   ?>
</B影我ODY>
</HTML>

程序4-18中的tate()函數是格式化服務器的時(shí)間函數,date(&下都quot;D")返回服務器時(shí雜光)間的星期時(shí)間中的英文的前物玩3個字符。當系統時(shí)間不爲星期六時(shí),其運廠照行結果如圖4-14所示.

4-14.jpg

圖4-14  程序4-舊員18.php的運行結果

        在上述3種(zhǒ多時ng)基本結構中,如果在statement語句體中還(hái)商的有if…else…語句,就(jiù少得)構成(chéng)if…else…語句的嵌套。校匠

二、switch語句

      嵌套的i唱黑f…else…語句可以處理多分支流程,廠體但使用起(qǐ)來比較繁瑣而且也不太清晰,爲此PHP中又引進(jì件笑n)了switch語句。其語法照雨如下:

switch (expr) {

       金到;     case expr1這光:

    &人術nbsp;   &在術nbsp;    &nbs唱笑p;    sta不理tement1;

    坐水    &有術nbsp;   公花      brea她冷k;

      現黑      case exp那一r2:

       校嗎    分低       s白湖tatement2;

      又妹;     &nbs子電p;    &n能購bsp; break;

     日男      制工;  ┆

      嗎線   &n但房bsp;   ┆

    &nb爸能sp;      看西; default:

     著湖;   小著     街視;     門湖;statementN;

     &n南畫bsp;     &nbs事資p;   體票;   break;

}

      其中的expr爲條件,通土動常是變量名稱。而case後(hòu)的exprN,通常鐘山表示變量的值。冒号後(hòu)則爲符合該條件要執動媽行的語句。一定要注意break的作用爲退出sw中視itch結構,千萬不能(néng)省略不寫。具體使用如程序4-19.朋對php所示。

<!--文件4-19.ph坐些p:switch的應用-->
<HTML>
<技新HEAD>
  &nbs謝分p; <TITLE>s綠離witch的應用</TITLE>
</H中遠EAD>
<BODY>
   綠窗; <?php
 &nb窗相sp;  &n劇廠bsp;  見信; //本程序測試時(s女醫hí),請更改測試服務器的系統時(shí)間查看效果
  呢門;   &nb影跳sp;  echo&n畫用bsp;"今天是:".date(&q弟見uot;D")."<br>&qu好動ot;;
     為民   swi有分tch (date("D")) 子答{
    &n吧身bsp;  &nbs個作p;  &司黑nbsp; case "Mon&書章quot;:
 &nb鐵錯sp;     &技對nbsp;    echo&n低著bsp;"今天星期一";
 商地;  &nbs相人p;     讀視;   brea員農k;
    &nb工醫sp;     &nbs子窗p; case 綠輛;"Tue":
   &n資如bsp;     國筆   echo &朋區quot;今天星期二";
   &nb中業sp;     &nb吧老sp;  break;
 醫離;    &nbs術能p;   &nbs視問p;  case "朋明Wed":
    得匠;      畫數  echo "藍師;今天星期三";
  說朋    &n站山bsp;     brea事照k;
   &還高nbsp;    熱地;   &nbs木鄉p;case "輛間;Thu":
 信司    &n費輛bsp;     這睡 echo "今天星期四";
市上   &n子費bsp;  &n煙玩bsp;  女暗   b鐵機reak;
    &n我內bsp;     亮相  case&n人志bsp;"Fri":
  數也;   白為;     &nbs雪體p; echo "今天星期五&quo明山t;;
   &nb算森sp;  &現是nbsp;     bre作又ak;
    &nb草得sp;    &nb好理sp;  de吧拿fault:
 &nbs火場p;   &nb慢機sp;    &nbs做信p; echo&nb舞跳sp;"今天放假";
  女個;   &nb他船sp;  &話是nbsp;   break;
 信森      &n自生bsp;}
  &nb明物sp; ?>
</BODY>
<海信;/HTML>

程序4-19.php的運行效果如圖4-15所示。

4-15.jpg

圖4-15  程序4-19.php的運行結果


通過(guò)比較,不難發(fā)現例4-19.ph照工p要比例4-18.php簡單一些,最主要的是程序清晰。


4.3.5.2  循環控制語句 線學;


一、do…while…語句

       在PHP中,do報明…while…循環語句有兩(liǎ水票ng)種(zhǒng)結構,一種(zhǒng)隻有while作通…部分,另一種(zhǒng)是do…為秒while…兩(liǎng)部分都(dōu)有。


1. 隻有while…部分的語句

其語法如下:

while (expr) {

     那車   &nbs南用p;   statement

}


2.do…while…兩(liǎng)部分都(dōu)有的語句

其語法如下:

do {

    師她;   機我;     stat議中ement

} while (expr);

     歌知;  其中的expr爲判斷的條件,通常爲邏輯表達式或比較到金表達式。而statement爲符合條件的執行部她道分程序,若程序隻有一行,可以省略大括号{}。

      商爸兩(liǎng)種(zhǒng)結構的區别在于:前者是先判斷條件再習科執行語句,後(hòu)者是先執行語句再判斷條會在件。對(duì)于expr開(kāi)始爲真的情況,兩(liǎ一內ng)種(zhǒng)結構是沒(méi南近)有區别的。如果expr開(kāi)始爲假,則前者不執行任何語句就(jiù)跳子理出循環,而後(hòu)者仍要執行一次循環才從通能(néng)跳出循環。

具體使用如程序4-20.php所示。

<!--文件4-20.php:do…司厭while…的應用-->
<H好下TML>
<HEAD>
腦匠    <TITLE>do樂道…while…的應用</TITLE>
</HEAD>
算熱<BODY>
  &開書nbsp; <?php
 草校;  &n話樂bsp;    /雨村/本程序測試時(shí),請將(jiāng)兩(liǎng)歌中處$i的初始值改爲爲4後(hòu)再測試一次
  &nbs什工p;     //觀察結果河日,分析區别
 &nbs視嗎p;    兒些  $i=1;
 &n秒空bsp;    &見件nbsp; while($i<=3){
&n有近bsp;    &都妹nbsp;  &nbs舞空p;   print&nbs話金p;$i  ;
  &n科會bsp;    &n暗現bsp;  &制離nbsp; echo商土 ". 以後(hòu)不敢了<br廠議> "嗎笑;;
      兵請  }
 &鐘技nbsp;   &商美nbsp;  echo技那 "第二次……<br>";明近
      信鄉  $i=1;
 &nb懂門sp;   &nb南就sp;  do藍化{
   &nbs購到p;   &nbs我話p;    冷和;print $i 知樂 ;
 &物來nbsp;    &nb東事sp;  &n線得bsp;  echo &quo村公t;. 以後(hòu)不敢了<br> &qu們計ot;;
    &n樂腦bsp;   } while訊錢($i<=3)
    ?>子科;
</BODY>
</HTML>

由于網頁解析的原因,頁面(miàn)無法顯示兩(liǎng)個加号,同哥身學(xué)們在編寫代碼的時(shí)候要注意不要漏寫。

其運行效果如圖4-16所示。

4-16.jpg

圖4-16  $i初值爲1時(shí),程序4-20議科.php的運行結果

4-16.2.jpg

圖4-16  $i初值爲4時(shí),程序4-2村畫0.php的運行結果


      作上 當我們把第10行和16行更改爲“$i=4;”後(hòu),和懂其運行效果如圖4-16所示,這(z內很hè)樣(yàng)就(jiù喝爸)不難看出兩(liǎng)種(zhǒng)區得循環結構的區别了。


二、for語句

     白知 for語句僅有單純的一種(z從鐵hǒng),沒(méi)有其他變化,但同時(shí)也是最複雜、功能(草湖néng)最強大的循環語句任何while循金她環和do…while…循環都(d照還ōu)可以用for循環代替。For語句的語法如下:

for(expr1;expr2;expr3){

statement

}

    &n一通bsp;其中expr1爲條件的初始值,expr2爲判斷的條件,通常都們身(dōu)是用比較表達式或邏輯表達式作爲判斷的條件,expr3爲購就執行statement後(hòu)要執行的部分,即循環步長(cháng),可姐我以用來改變條件,供下次的循環判斷,如將(j農請iāng)循環變量加1、減1等。statement吃街爲符合條件後(hòu)執行的語句或語句體,若statemen事湖t隻有一條語句組成(chéng),則可以省略大括号{}。弟子

程序的主體部分可以用for循環改寫如下:

<?php

for ($i=1;$i<=3;機草$i  ){

echo $i.". 以森大後(hòu)不敢了<br>";

}

?>

當然還(hái)可以改寫成(chéng)以下幾種(zhǒng)形式:

<?php

$i=1;

     下們  for (;$i<子章=10;$i  ){日讀

     街放    e務雪cho $i.". 以後(hòu)不敢了那玩<br>";

   紙鄉   }

?>

(由于網頁解析的原因,頁面(miàn)無法顯示兩(liǎng)個術明加号,同學(xué)們在編寫代碼的時(shí)秒內候要注意不要漏寫。)

<?php

for ($i=1;;$i  事動){

     照水;  &nb她行sp;     &nbs訊和p; if ($i>10) 科近 break;    //循環标這男志結束,跳出循環

   &n黃林bsp;  &nb飛見sp;     &nbs那又p;  echo $i.&q有有uot;. 以後(hòu)不敢了<資西br>";

    &他亮nbsp;      }

?>

<?php

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

      &n遠藍bsp;  &nbs黑弟p;     echo $i.街就". 以後(hòu)不敢了<br>&吃木quot;;

     &醫船nbsp;  &n多北bsp;  &n章公bsp;   $i    ;

     &n在呢bsp;  &nbs時拿p;  }

?>

      些雜 可以明顯地看出用for語句和很章用while語句的不同。實際應用上中,若循環有初始值,且循環過(光西guò)程中都(dōu)要累加(或累減),則使用朋內for循環比用while循環好(hǎo)。

由于網頁解析的原因,頁面(miàn)無法顯示兩(liǎng)個加号,同學(xué)們在樹海編寫代碼的時(shí)候要注意不要漏寫就房。

4.3.5.3  break和continue語句


      &nb日信sp;在switch和for語句的例子地音中都(dōu)用到了break語句,它的作舊頻用就(jiù)是跳出整個switch議紙分支結構或for循環結構,執行其下面(miàn)的語句。而co司紅ntinue經(jīng)常用在for或do…wh日東ile…循環語句中,表示跳出本次循環,繼續進(jìn章喝)入下一次循環。這(zhè)也是break和continue的主要看討區别,如程序4-21.php所示。

<!--文件4-21.php:break/contin事業ue的應用-->
<HTML>
&笑店lt;HEAD>
   &n南體bsp;<TITLE>break/continue的應用間照</TITLE>
</HEAD>些離
<BODY>
  &老城nbsp; <?php
&n是空bsp;   &nb日可sp;   ec光購ho"使用break的輸出效果:<報下;br>";
  &nbs歌低p;     $i=0;微購
  &nbs煙我p;   &n朋輛bsp; while ($i們知<10) {
 &nb都間sp;     &nbs輛厭p;    if (數廠$i%2==1) {
  &nb笑唱sp;    &厭請nbsp;  司明  &nbs厭得p;   街從;break;
    &nb森器sp;     暗刀;  }
&著得nbsp;    不錯   腦區;  &nb短女sp; echo $i;
  &nb我站sp;     &n了坐bsp;   $i  相議;;
  &體師nbsp;  &n新些bsp;  }
  &nb在訊sp;     用術echo "來業<br>使用cont不些ine的輸出效果:<br>";
爸對   作算;    微人 for($i=0;$i<10;$i &nbs白費p;){
   &n低哥bsp;     愛還   if ($如個i%2){
    &nb視日sp;   是紅   弟近;     continu關開e;
     &n他線bsp;   兵鐵  &nbs很錯p;}
     刀員    跳舞;   echo 通來;$i."&nbsp;&quo嗎亮t;;
   &nb個舊sp;   &nbs房匠p;}
    ?說山>
</BODY>
</HTML>

程序4-21.php運行結果如圖4-18所示。

4-18.jpg

圖4-18  程序4-21.p些可hp的運行結果



  • 趙博文 2018-01-07 16:0你你0:48
    PHP 提供了一些流程控制的替代語法,包括 if,while,for,f唱拍oreach 和 switch。替代語法的基答著本形式是把左花括号({)換成(chéng)冒号(:),理樂把右花括号(})分别換成(ché媽物ng) endif;,endwh人妹ile;,endfor;,endforeach; 以及 e電業ndswitch;。
  • 趙博文 2018-01-07 16:01:31
    switch 和第一個 case 之間的任何輸出(含空格自報)將(jiāng)導緻語法錯誤。例如,這(zhè)樣(yàng)是無效的:訊技 <?php switch ($foo): ?&g兵風t; <?php case 1: ?>從站; ... <?php endswitch ?>
  • 嶽猛 2018-01-09 16:21:42
    看了視頻才知道(dào) PHP還(影答hái)提供了break語句和continue語句,用以跳出有好分支結構或循環結構 非常的實用
  • 甄丹丹 2018-01-09 16:23:49
    在switch和for語句的例子中都(dōu)用到了break語句,它的作用就音相(jiù)是跳出整個switc做可h分支結構或for循環結構,執行其下面(miàn)的語句。而continu對愛e經(jīng)常用在for或do…whi書吃le…循環語句中,表示跳出本次循環,繼續進(jìn)錢海入下一次循環。這(zhè)也是break和con分來tinue的主要區别
  • 魏德旺 2018-01-09 16:25:26
    邏輯性好(hǎo)強,