流程控制

1、判斷

判斷用白話講就是若是怎麼樣就怎麼樣要否則就怎麼樣。 php

用的是「if」這個前面咱們已經用過,這裏咱們詳細講一下。完整的if是 html

1 if(expr1){//若是怎樣
2 //code1  //就怎樣
3 }elseif(expr2){ //要否則若是怎樣
4 //code2 //就怎樣
5 }else{ //要否則
6 //code3 //怎樣
7 }

上面的代碼中有三個條件,expr1,expr2,以及這兩種之外,若是隻有兩種條件,能夠把中間elseif去掉便可,若是有4種5種。。。只要繼續寫elseif便可,程序將從上到下去匹配expr直到爲true。其中elseif也能夠寫成,else if中間有個空格,當code們只有一句時能夠去掉大括號,可是,爲了代碼清晰,咱們仍是加上比較好,以避免出錯。還有一點,當只有一個條件時,甚至能夠不要else。下面例子將展現全部類型 express

01 //四個條件
02 $a=1.8;
03 $b=2;
04 if($a<0){
05 echo "$a<0";
06 }else if($a<1)
07 echo "$a<1";//我沒有使用大括號
08 elseif($a<2){//我和上面的else if不一樣
09 echo "$a<2";
10 }else{
11 echo "$a>=2";
12 }
13 //一個條件
14 if($a==$b){
15 echo '$a==$b';
16 }
17 //儘可能使用括號的忠告看看下面的代碼 想一想結果是否和你想的同樣
18 if($a>1)
19    $b=$a;
20    $a=2;
21    $b*=$a;
22 echo $b;

2、循環

循環比較多,分別介紹下。 數組

for:能夠理解爲,從一個值到另外一個值,一直作某件事。for的寫法是 app

for (expr1; expr2; expr3)
    code

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

expr2 在每次循環開始前求值。若是值爲 TRUE,則繼續循環,執行嵌套的循環語句。若是值爲 FALSE,則終止循環。 ui

expr3 在每次循環以後被求值(執行)。 expr3不必定出如今小括號裏面,也能夠寫在code裏面,總之就是要讓expr2有能變成false不然將陷入死循環簡單例子 spa

1 for ($i = 1; $i <= 10; $i++) {
2     echo $i."\n";
3 }

while:能夠理解爲,當怎麼樣那麼就一直怎麼樣。while的寫法是 .net

while (expr)
    code
它告訴 PHP 只要 while 表達式的值爲 TRUE 就重複執行嵌套中的循環語句。表達式的值在每次開始循環時檢查,因此即便這個值在循環語句中改變了,語句也不會中止執行,直到本次循環結束。有時候若是 while 表達式的值一開始就是 FALSE,則循環語句一次都不會執行。這裏要注意要給expr有false的機會,不然將陷入死循環。
1 $i=1;
2 while($i<=10){
3 echo $i."\n";
4 $i++;
5 }

do-while:這個基本上和while是同樣的惟一的區別在,不管while判斷是否爲true,都會執行一次,循環體。do-while的寫法 code

1 do{
2 //code
3 }while(expr);
1 //一樣輸出1到10
2 $i=1;
3 do{
4   echo $i."\n";
5   $i++;
6 }while($i<=10);

foreach:這個在前面有介紹過,就是遍歷數組而且只能用於遍歷數組。若是提供給foreach的不是數組,將會出現致命錯誤。Invalid argument supplied for foreach();foreach的寫法有兩種

foreach (array_expression as $value)
    code
foreach (array_expression as $key => $value)
    code
1 $arr = array(1,2,3,4);
2 foreach($arr as $v){
3   echo $v."\n";
4   $v = 0;
5   echo $v."\n";
6 }
7 var_dump($arr);
第一種方法遍歷數組的值將值賦值給value,而第二種方法把值賦值給value把key賦值給key
注意:除非數組是被引用,foreach 所操做的是指定數組的一個拷貝,而不是該數組自己。因此被foreach操做的數組自己不發生變化。
switch:switch能夠理解爲不少個if。
01 switch ($i) {
02     case 0:
03         echo "i equals 0";
04         break;
05     case 1:
06         echo "i equals 1";
07         break;
08     case 2:
09         echo "i equals 2";
10         break;
11    default:
12    echo "i equals nothing";
13 }
爲避免錯誤,理解 switch 是怎樣執行的很是重要。switch 語句一行接一行地執行(其實是語句接語句)。開始時沒有代碼被執行。僅當一個 case 語句中的值和 switch 表達式的值匹配時 PHP 纔開始執行語句,直到 switch 的程序段結束或者遇到第一個 break 語句爲止。若是不在 case 的語句段最後寫上 break的話,PHP 將繼續執行下一個 case 中的語句段。另外若是一個case也沒匹配上,將會執行default:;試試下面的代碼
1 $i=0;
2 switch ($i) {
3     case 0:
4         echo "i equals 0";
5     case 1:
6         echo "i equals 1";
7     case 2:
8         echo "i equals 2";
9 }

這裏若是 $i 等於 0,PHP 將執行全部的 print 語句!若是 $i 等於 1,PHP 將執行後面兩條 print 語句。只有當 $i 等於 2 時,纔會獲得「預期」的結果——只顯示「i equals 2」。因此,別忘了 break 語句就很重要(即便在某些狀況下故意想避免提供它們時)。

在 switch 語句中條件只求值一次並用來和每一個 case 語句比較。在 elseif 語句中條件會再次求值。若是條件比一個簡單的比較要複雜得多或者在一個不少次的循環中,那麼用 switch 語句可能會快一些。

在一個 case 中的語句也能夠爲空,這樣只不過將控制轉移到了下一個 case 中的語句。

 break:break 結束當前 forforeachwhiledo-while 或者 switch 結構的執行。

break能夠接受一個可選的數字參數來決定跳出幾重循環。 試試下面的代碼

1 for ($i = 1; $i <= 10; $i++) {
2     echo $i."\n";
3     if($i>4){
4        break;
5      }
6 }

continue:continue和break相似,只是他用來跳過本次循環。continue後面也能夠接數字表示跳出幾重循環。試試下面的代碼,看看和你想的是否是同樣吧

1 for ($i = 0; $i < 5; ++$i) {
2     if ($i == 2)
3         continue
4     print "$i\n";
5 }

3、其餘

declare:directive 部分容許設定 declare 代碼段的行爲。其實這個不經常使用。至少在我工做中沒用到,他可使用其餘方式替代。不去了解也罷。

 return:即返回,用在函數中。

若是在一個函數中調用 return() 語句,將當即結束此函數的執行並將它的參數做爲函數的值返回。return()也會終止 eval() 語句或者腳本文件的執行。

若是在全局範圍中調用,則當前腳本文件停止運行。若是當前腳本文件是被 include() 的或者 require()的,則控制交回調用文件。此外,若是當前腳本是被 include() 的,則 return() 的值會被看成 include() 調用的返回值。若是在主腳本文件中調用 return(),則腳本停止運行。若是當前腳本文件是在 php.ini 中的配置選項 auto_prepend_file 或者 auto_append_file 所指定的,則此腳本文件停止運行。

注意: return() 是語言結構而不是函數,所以其參數沒有必要用括號將其括起來。一般都不用括號,實際上也應該不用,這樣能夠下降 PHP 的負擔。

試試下面的代碼看看是否是和你想的同樣

1 function zhuge(){
2   $i=0;
3  
4   return $i;
5   $i = 1;
6   echo $i."\n";
7 }
8 test();
9 var_dump(test);

goto:顧名思義即跳到某處執行,可是由於使用goto會使代碼流程不混亂,因此咱們不推薦你們使用。也就不具體講了。

另外提供了一些流程控制的替代語法,包括 ifwhileforforeach 和 switch。替代語法的基本形式是把左花括號({)換成冒號(:),把右花括號(})分別換成 endif;endwhile;endfor;endforeach; 以及endswitch;。 當看到別人寫得代碼出現這種形式的時候不要不認識便可,有時候html和php混合寫得時候也能夠用這種形式來使代碼更加易讀。

接下來是咱們從一開始到如今來第一次接觸到兩個或兩個以上文件。

include和include_once二者都是包含並運行文件,惟一的區別是,include_once若是該文件中的代碼已經被包含了,則不會再次包含。其實咱們能夠這樣想,包含了之後,兩個php文件能夠當作一個php文件,就這麼簡單。

require和require_once:和include實際上是同樣的,惟一的區別是當包含失敗時,include() 產生一個Warning而 require() 則致使一個致命錯誤,使腳本中止運行。其實也能夠從字面上去理解,include僅僅是包含,require不只僅是包含仍是需求。

新建a.php,b.php兩個文件分別寫入以下代碼而後運行b.php看看效果吧

1 <?php
2 function zhuge(){
3 echo "qaforcode.net";
4 }
5 ?>

 

1 <?php
2 include(dirname(__FILE__)."/a.php");
3 test();
4 ?>

過會兒試試下面兩個代碼,和上面同樣分別寫在兩個文件中

1 <?php
2 echo "我是文件a!\n";
3 echo "include_once\n";include_once("b.php");
4 echo "include_once\n";include_once("b.php");
5 echo "include\n";include("b.php");
6 echo "文件a結束了\n";
7 ?>

 

1 <?php
2 echo "我是文件b\n";
3 ?>

而後運行文件a看看效果吧

本文固定連接: http://www.qaforcode.net/archives/243 | 豬哥每日一貼

相關文章
相關標籤/搜索