<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. php語言

    PHP常用控制結構

    時間:2025-03-17 04:41:37 php語言 我要投稿
    • 相關推薦

    PHP常用控制結構

      不要嘲笑鐵樹。為了開一次花,它付出了比別的樹種更長久的努力。 以下是小編為大家搜索整理了PHP常用控制結構,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!

      控制結構

      目錄 流程控制的替代語法

      任何 PHP 腳本都是由一系列語句構成的。一條語句可以是一個賦值語句,一個函數調用,一個循環,一個條件語句或者甚至是一個什么也不做的語句(空語句)。語句通常以分號結束。此外,還可以用花括號將一組語句封裝成一個語句組。語句組本身可以當作是一行語句。本章講述了各種語句類型。 if

      if 結構是很多語言包括 PHP 在內最重要的特性之一,它允許按照條件執行代碼片段。PHP 的 if 結構和 C 語言相似:

      if (expr)

      statement

      ?>

      expr 按照布爾求值。如果 expr 的值為 TRUE,PHP 將執行 statement,如果值為 FALSE - 將忽略 statement。有關哪些值被視為 FALSE 的更多信息參見轉換為布爾值一節。

      如果 $a 大于 $b,則以下例子將顯示 a is bigger than b:

      if ($a > $b)

      echo "a is bigger than b";

      ?>

      經常需要按照條件執行不止一條語句,當然并不需要給每條語句都加上一個 if 子句。可以將這些語句放入語句組中。例如,如果 $a 大于 $b,以下代碼將顯示 a is bigger than b 并且將 $a 的值賦給 $b:

      if ($a > $b) {

      echo "a is bigger than b";

      $b = $a;

      }

      ?>

      if 語句可以無限層地嵌套在其它 if 語句中,這給程序的不同部分的條件執行提供了充分的彈性。

      : 語言參考 : 控制結構 else

      經常需要在滿足某個條件時執行一條語句,而在不滿足該條件時執行其它語句,這正是 else 的功能。else 延伸了 if 語句,可以在 if 語句中的表達式的值為 FALSE 時執行語句。例如以下代碼在 $a 大于 $b 時顯示 a is bigger than b,反之則顯示 a is NOT bigger than b: copy to clipboard

      if ($a > $b) {

      echo "a is bigger than b";

      } else {

      echo "a is NOT bigger than b";

      }

      ?>

      else 語句僅在 if 以及 elseif(如果有的話)語句中的表達式的值為 FALSE 時執行(參見 elseif)。

      << 控制結構 Main : 語言參考 : 控制結構 : else This page online Report a bug elseif >> elseif

      elseif,和此名稱暗示的一樣,是 if 和 else 的組合。和 else 一樣,它延伸了 if 語句,可以在原來的 if 表達式值為 FALSE 時執行不同語句。但是和 else 不一樣的是,它僅在 elseif 的條件表達式值為 TRUE 時執行語句。例如以下代碼將根據條件分別顯示 a is bigger than b,a equal to b 或者 a is smaller than b: copy to clipboard

      if ($a > $b) {

      echo "a is bigger than b";

      } elseif ($a == $b) {

      echo "a is equal to b";

      } else {

      echo "a is smaller than b";

      }

      ?>

      在同一個 if 結構中可以有多個 elseif 語句。第一個表達式值為 TRUE 的 elseif 語句(如果有的話)將會執行。在 PHP 中,也可以寫成“else if”(兩個單詞),它和“elseif”(一個單詞)的行為完全一樣。句法分析的含義有少許區別(如果你熟悉 C 語言的話,這是同樣的行為),但是底線是兩者會產生完全一樣的行為。

      elseif 的語句僅在之前的 if 或 elseif 的表達式值為 FALSE,而當前的 elseif 表達式值為 TRUE 時執行。

      Main : 語言參考 : 控制結構 : elseif This page online Report a bug 流程控制的替代語法 >> << else 流程控制的替代語法

      PHP 提供了一些流程控制的替代語法,包括 if,while,for,foreach 和 switch。替代語法的基本形式是把左花括號({)換成冒號(:),把右花括號(})分別換成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;。 copy to clipboard

      A is equal to 5

      在上面的例子中,HTML 內容“A is equal to 5”用替代語法嵌套在 if 語句中。該 HTML 的內容僅在 $a 等于 5 時顯示。

      替代語法同樣可以用在 else 和 elseif 中。下面是一個包括 elseif 和 else 的 if 結構用替代語法格式寫的例子: copy to clipboard

      if ($a == 5):

      echo "a equals 5";

      echo "...";

      elseif ($a == 6):

      echo "a equals 6";

      echo "!!!";

      else:

      echo "a is neither 5 nor 6";

      endif;

      ?>

      更多例子參見 while,for 和 if。

      Main : 語言參考 : 控制結構 : 流程控制的替代語法 This page online Report a bug << elseif while >> while

      while 循環是 PHP 中最簡單的循環類型。它和 C 語言中的 while 表現得一樣。while 語句的基本格式是: copy to clipboard

      while (expr)

      statement

      while 語句的含意很簡單,它告訴 PHP 只要 while 表達式的值為 TRUE 就重復執行嵌套中的循環語句。表達式的值在每次開始循環時檢查,所以即使這個值在循環語句中改變了,語句也不會停止執行,直到本次循環結束。有時候如果 while 表達式的值一開始就是 FALSE,則循環語句一次都不會執行。

      和 if 語句一樣,可以在 while 循環中用花括號括起一個語句組,或者用替代語法: copy to clipboard

      while (expr):

      statement

      ...

      endwhile;

      下面兩個例子完全一樣,都顯示數字 1 到 10: copy to clipboard

      /* example 1 */

      $i = 1;

      while ($i <= 10) {

      echo $i++; /* the printed value would be

      $i before the increment

      (post-increment) */

      }

      /* example 2 */

      $i = 1;

      while ($i <= 10):

      print $i;

      $i++;

      endwhile;

      ?>

      << 流程控制的替Main : 語言參考 : 控制結代語法 構 : while This page online Report a bug

      do-while do-while >>

      do-while 和 while 循環非常相似,區別在于表達式的值是在每次循環結束時檢查而不是開始時。和正規的 while 循環主要的區別是 do-while 的循環語句保證會執行一次(表達式的真值在每次循環結束后檢查),然而在正規的 while 循環中就不一定了(表達式真值在循環開始時檢查,如果一開始就為 FALSE 則整個循環立即終止)。

      do-while 循環只有一種語法: copy to clipboard

      $i = 0;

      do {

      echo $i;

      } while ($i > 0);

      ?>

      以上循環將正好運行一次,因為經過第一次循環后,當檢查表達式的真值時,其值為 FALSE($i 不大于 0)而導致循環終止。

      資深的 C 語言用戶可能熟悉另一種不同的 do-while 循環用法,把語句放在 do-while(0) 之中,在循環內部用 break 語句來結束執行循環。以下代碼片段示范了此方法: copy to clipboard

      do {

      if ($i < 5) {

      echo "i is not big enough";

      break;

      }

      $i *= $factor;

      if ($i < $minimum_limit) {

      break;

      }

      echo "i is ok";

      /* process i */

      } while(0);

      ?>

      如果還不能立刻理解也不用擔心。即使不用此“特性”也照樣可以寫出強大的代碼來。

      for

      copy to clipboard

      for (expr1; expr2; expr3)

      statement

      第一個表達式(expr1)在循環開始前無條件求值一次。

      expr2 在每次循環開始前求值。如果值為 TRUE,則繼續循環,執行嵌套的循環語句。如果值為 FALSE,則終止循環。

      expr3 在每次循環之后被求值(執行)。

      每個表達式都可以為空。expr2 為空意味著將無限循環下去(和 C 一樣,PHP 認為其值為 TRUE)。這可能不像想象中那樣沒有用,因為經常會希望用 break 語句來結束循環而不是用 for 的表達式真值判斷。

      考慮以下的例子,它們都顯示數字 1 到 10: copy to clipboard

      /* example 1 */

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

      echo $i;

      }

      /* example 2 */

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

      if ($i > 10) {

      break;

      }

      echo $i;

      }

      /* example 3 */

      $i = 1;

      for (;;) {

      if ($i > 10) {

      break;

      }

      echo $i;

      $i++;

      }

      /* example 4 */

      for ($i = 1; $i <= 10; echo $i, $i++);

      ?>

      當然,第一個例子看上去最正常(或者第四個),但用戶可能會發現在 for 循環中用空的表達式在很多場合下會很方便。

      PHP 也支持用冒號的 for 循環的替代語法。 copy to clipboard

      for (expr1; expr2; expr3):

      statement;

      ...

      endfor; << do-while Main : 語言參考 : 控制結構 : for This page online Report a bug foreach >> foreach

      PHP 4 引入了 foreach 結構,和 Perl 以及其他語言很像。這只是一種遍歷數組簡便方法。foreach 僅能用于數組,當試圖將其用于其它數據類型或者一個未初始化的變量時會產生錯誤。有兩種語法,第二種比較次要但卻是第一種的有用的擴展。 copy to clipboard

      foreach (array_expression as $value)

      statement

      foreach (array_expression as $key => $value)

      statement

      第一種格式遍歷給定的 array_expression 數組。每次循環中,當前單元的值被賦給 $value 并且數組內部的指針向前移一步(因此下一次循環中將會得到下一個單元)。

      第二種格式做同樣的事,只除了當前單元的鍵名也會在每次循環中被賦給變量 $key。

      自PHP 5 起,還可能遍歷對象。

      注意:

      當 foreach 開始執行時,數組內部的指針會自動指向第一個單元。這意味著不需要在 foreach 循環之前調用 reset()。

      注意:

      除非數組是被引用,foreach 所操作的是指定數組的一個拷貝,而不是該數組本身。因此數組指針不會被 each() 結構改變,對返回的數組單元的修改也不會影響原數組。不過原數組的內部指針的確在處理數組的過程中向前移動了。假定 foreach 循環運行到結束,原數組的內部指針將指向數組的結尾。

      自 PHP 5 起,可以很容易地通過在 $value 之前加上 & 來修改數組的單元。此方法將以引用賦值而不是拷貝一個值。 copy to clipboard

      $arr = array(1, 2, 3, 4);

      foreach ($arr as &$value) {

      $value = $value * 2;

      }

      // $arr is now array(2, 4, 6, 8)

      ?>

      此方法僅在被遍歷的數組可以被引用時才可用(例如是個變量)。 注意:

      foreach 不支持用“@”來抑制錯誤信息的能力。

      用戶可能注意到了以下的代碼功能完全相同: copy to clipboard

      $arr = array("one", "two", "three");

      reset($arr);

      while (list(, $value) = each($arr)) {

      echo "Value: $value

      \n";0

      }

      foreach ($arr as $value) {

      echo "Value: $value

      \n";

      }

      ?>

      以下代碼功能也完全相同: copy to clipboard

      $arr = array("one", "two", "three");

      reset($arr);

      while (list($key, $value) = each($arr)) {

      echo "Key: $key; Value: $value

      \n";

      }

      foreach ($arr as $key => $value) {

      echo "Key: $key; Value: $value

      \n";

      }

      ?>

      示范用法的更多例子: copy to clipboard

      /* foreach example 1: value only */

      $a = array(1, 2, 3, 17);

      foreach ($a as $v) {

      echo "Current value of \$a: $v.\n";

      }

      /* foreach example 2: value (with key printed for illustration) */

      $a = array(1, 2, 3, 17);

      $i = 0; /* for illustrative purposes only */

      foreach ($a as $v) {

      echo "\$a[$i] => $v.\n";

      $i++;

      }

      /* foreach example 3: key and value */

      $a = array(

      "one" => 1,

      "two" => 2,

      "three" => 3,

      "seventeen" => 17

      );

      foreach ($a as $k => $v) {

      echo "\$a[$k] => $v.\n";

      }

      /* foreach example 4: multi-dimensional arrays */

      $a = array();

      $a[0][0] = "a";

      $a[0][1] = "b";

      $a[1][0] = "y";

      $a[1][1] = "z";

      foreach ($a as $v1) {

      foreach ($v1 as $v2) {

      echo "$v2\n";

      }

      }

      /* foreach example 5: dynamic arrays */

      foreach (array(1, 2, 3, 4, 5) as $v) {

      echo "$v\n";

      }

      ?>

      << for Main : 語言參考 : 控制結構 : foreach This page online Report a bug break >> break

      break 結束當前 for,foreach,while,do-while 或者 switch 結構的執行。 break 可以接受一個可選的數字參數來決定跳出幾重循環。 copy to clipboard

      $arr = array('one', 'two', 'three', 'four', 'stop', 'five');

      while (list (, $val) = each($arr)) {

      if ($val == 'stop') {

      break; /* You could also write 'break 1;' here. */ }

      echo "$val

      \n";

      }

      /* Using the optional argument. */

      $i = 0;

      while (++$i) {

      switch ($i) {

      case 5:

      echo "At 5

      \n";

      break 1; /* Exit only the switch. */

      case 10:

      echo "At 10; quitting

      \n";

      break 2; /* Exit the switch and the while. */

      default:

      break;

      }

      }

      ?>

      << foreach Main : 語言參考 : 控制結構 : break This page online Report a bug continue >> continue

      continue 在循環結構用用來跳過本次循環中剩余的代碼并在條件求值為真時開始執行下一次循環。

      注意:

      注意在 PHP 中 switch 語句被認為是可以使用 continue 的一種循環結構。 continue 接受一個可選的數字參數來決定跳過幾重循環到循環結尾。 copy to clipboard

      while (list ($key, $value) = each($arr)) {

      if (!($key % 2)) { // skip odd members

      continue;

      }

      do_something_odd($value);

      }

      $i = 0;

      while ($i++ < 5) {

      echo "Outer

      \n";

      while (1) {

      echo " Middle

      \n";

      while (1) {

      echo " Inner

      \n";

      continue 3;

      }

      echo "This never gets output.

      \n";

      }

      echo "Neither does this.

      \n";

      }

      ?>

      省略 continue 后面的分號會導致混淆。以下例子示意了不應該這樣做。 copy to clipboard

      for ($i = 0; $i < 5; ++$i) {

      if ($i == 2)

      continue

      print "$i\n";

      }

      ?>

      希望得到的結果是: copy to clipboard

      1

      3

      4

      可實際的輸出是: copy to clipboard

      2

      因為 print() 調用的返回值是 int(1),看上去作為了上述可選的數字參數。

      << break Main : 語言參考 : 控制結構 : continue This page online Report a bug switch >> switch

      switch 語句和具有同樣表達式的一系列的 IF 語句相似。很多場合下需要把同一個變量(或表達式)與很多不同的值比較,并根據它等于哪個值來執行不同的代碼。這正是 switch 語句的用途。

      注意:

      注意和其它語言不同,continue 語句作用到 switch 上的作用類似于 break。如果在循環中有一個 switch 并希望 continue 到外層循環中的下一個輪回,用 continue 2。

      下面兩個例子使用兩種不同方法實現同樣的事,一個用一系列的 if 語句,另一個用 switch 語句:

      例 7.1. switch 結構

      if ($i == 0) {

      echo "i equals 0";

      } elseif ($i == 1) {

      echo "i equals 1";

      } elseif ($i == 2) {

      echo "i equals 2";

      }

      switch ($i) {

      case 0:

      echo "i equals 0";

      break;

      case 1:

      echo "i equals 1";

      break;

      case 2:

      echo "i equals 2";

      break;

      }

      ?>

      例 7.2. switch 結構可以用字符串

      switch ($i) {

      case "apple":

      echo "i is apple";

      break;

      case "bar":

      echo "i is bar";

      break;

      case "cake":

      echo "i is cake";

      break;

      }

      ?>

      為避免錯誤,理解 switch 是怎樣執行的非常重要。switch 語句一行接一行地執行(實際上是語句接語句)。開始時沒有代碼被執行。僅當一個 case 語句中的值和 switch 表達式的值匹配時 PHP 才開始執行語句,直到 switch 的程序段結束或者遇到第一個 break 語句為止。如果不在 case 的語句段最后寫上 break 的話,PHP 將繼續執行下一個 case 中的語句段。例如:

      switch ($i) {

      case 0:

      echo "i equals 0";

      case 1:

      echo "i equals 1";

      case 2:

      echo "i equals 2";

      }

      ?>

      這里如果 $i 等于 0,PHP 將執行所有的 print 語句!如果 $i 等于 1,PHP 將執行后面兩條 print 語句。只有當 $i 等于 2 時,才會得到“預期”的結果――只顯示“i equals 2”。所以,別忘了 break 語句就很重要(即使在某些情況下故意想避免提供它們時)。

    【PHP常用控制結構】相關文章:

    php語句基本結構04-25

    PHP的樹形結構算法07-06

    PHP語言結構語句01-10

    PHP的語言結構語句02-13

    PHP知識:條件結構語句07-18

    PHP中的條件結構語句05-22

    PHP開發CS結構的技巧03-18

    php:樹形結構的算法實例04-01

    PHP中使用會話控制11-21

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人