1、判斷
判斷用白話講就是若是怎麼樣就怎麼樣要否則就怎麼樣。 php
用的是「if」這個前面咱們已經用過,這裏咱們詳細講一下。完整的if是 html
3 |
}elseif(expr2){ //要否則若是怎樣 |
上面的代碼中有三個條件,expr1,expr2,以及這兩種之外,若是隻有兩種條件,能夠把中間elseif去掉便可,若是有4種5種。。。只要繼續寫elseif便可,程序將從上到下去匹配expr直到爲true。其中elseif也能夠寫成,else if中間有個空格,當code們只有一句時能夠去掉大括號,可是,爲了代碼清晰,咱們仍是加上比較好,以避免出錯。還有一點,當只有一個條件時,甚至能夠不要else。下面例子將展現全部類型 express
07 |
echo "$a<1";//我沒有使用大括號 |
08 |
elseif($a<2){//我和上面的else if不一樣 |
17 |
//儘可能使用括號的忠告看看下面的代碼 想一想結果是否和你想的同樣 |
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++) { |
while:能夠理解爲,當怎麼樣那麼就一直怎麼樣。while的寫法是 .net
while (expr)
code
它告訴 PHP 只要 while 表達式的值爲 TRUE 就重複執行嵌套中的循環語句。表達式的值在每次開始循環時檢查,因此即便這個值在循環語句中改變了,語句也不會中止執行,直到本次循環結束。有時候若是 while 表達式的值一開始就是 FALSE,則循環語句一次都不會執行。這裏要注意要給expr有false的機會,不然將陷入死循環。
do-while:這個基本上和while是同樣的惟一的區別在,不管while判斷是否爲true,都會執行一次,循環體。do-while的寫法 code
foreach:這個在前面有介紹過,就是遍歷數組而且只能用於遍歷數組。若是提供給foreach的不是數組,將會出現致命錯誤。Invalid argument supplied for foreach();foreach的寫法有兩種
foreach (array_expression as $value)
code
foreach (array_expression as $key => $value)
code
第一種方法遍歷數組的值將值賦值給value,而第二種方法把值賦值給value把key賦值給key
注意:除非數組是被引用,foreach 所操做的是指定數組的一個拷貝,而不是該數組自己。因此被foreach操做的數組自己不發生變化。
switch:switch能夠理解爲不少個if。
12 |
echo "i equals nothing"; |
爲避免錯誤,理解 switch 是怎樣執行的很是重要。switch 語句一行接一行地執行(其實是語句接語句)。開始時沒有代碼被執行。僅當一個 case 語句中的值和 switch 表達式的值匹配時 PHP 纔開始執行語句,直到 switch 的程序段結束或者遇到第一個 break 語句爲止。若是不在 case 的語句段最後寫上 break的話,PHP 將繼續執行下一個 case 中的語句段。另外若是一個case也沒匹配上,將會執行default:;試試下面的代碼
這裏若是 $i 等於 0,PHP 將執行全部的 print 語句!若是 $i 等於 1,PHP 將執行後面兩條 print 語句。只有當 $i 等於 2 時,纔會獲得「預期」的結果——只顯示「i equals 2」。因此,別忘了 break 語句就很重要(即便在某些狀況下故意想避免提供它們時)。
在 switch 語句中條件只求值一次並用來和每一個 case 語句比較。在 elseif 語句中條件會再次求值。若是條件比一個簡單的比較要複雜得多或者在一個不少次的循環中,那麼用 switch 語句可能會快一些。
在一個 case 中的語句也能夠爲空,這樣只不過將控制轉移到了下一個 case 中的語句。
break:break 結束當前 for,foreach,while,do-while 或者 switch 結構的執行。
break能夠接受一個可選的數字參數來決定跳出幾重循環。 試試下面的代碼
1 |
for ($i = 1; $i <= 10; $i++) { |
continue:continue和break相似,只是他用來跳過本次循環。continue後面也能夠接數字表示跳出幾重循環。試試下面的代碼,看看和你想的是否是同樣吧
1 |
for ($i = 0; $i < 5; ++$i) { |
3、其餘
declare:directive 部分容許設定 declare 代碼段的行爲。其實這個不經常使用。至少在我工做中沒用到,他可使用其餘方式替代。不去了解也罷。
return:即返回,用在函數中。
若是在一個函數中調用 return() 語句,將當即結束此函數的執行並將它的參數做爲函數的值返回。return()也會終止 eval() 語句或者腳本文件的執行。
若是在全局範圍中調用,則當前腳本文件停止運行。若是當前腳本文件是被 include() 的或者 require()的,則控制交回調用文件。此外,若是當前腳本是被 include() 的,則 return() 的值會被看成 include() 調用的返回值。若是在主腳本文件中調用 return(),則腳本停止運行。若是當前腳本文件是在 php.ini 中的配置選項 auto_prepend_file 或者 auto_append_file 所指定的,則此腳本文件停止運行。
注意: return() 是語言結構而不是函數,所以其參數沒有必要用括號將其括起來。一般都不用括號,實際上也應該不用,這樣能夠下降 PHP 的負擔。
試試下面的代碼看看是否是和你想的同樣
goto:顧名思義即跳到某處執行,可是由於使用goto會使代碼流程不混亂,因此咱們不推薦你們使用。也就不具體講了。
另外提供了一些流程控制的替代語法,包括 if,while,for,foreach 和 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看看效果吧
2 |
include(dirname(__FILE__)."/a.php"); |
過會兒試試下面兩個代碼,和上面同樣分別寫在兩個文件中
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"); |
而後運行文件a看看效果吧
本文固定連接: http://www.qaforcode.net/archives/243 | 豬哥每日一貼