PHP 學習紀錄(三):PHP流程控制
一、流程控制概要
所謂流程控制就是在代碼邏輯中增加一些開關,讓代碼可以按照業務需求運行到最後
1.流程控制種類
在PHP中流程控制分為3種:順序結構、分支結構、循環結構
(1)順序結構
最普遍的一種結構,不需要人為控制,代碼按照編寫順序從上往下執行
(2)分支結構
需要人為控制,將可能發生結果的代碼塊,按照指定的條件去判斷執行
(3)循環結構
是代碼高效解決重複問題的一種方式,通常是設定變化條件,然後代碼在指定的範圍內重複執行
二、分支結構
1.IF分支結構
IF就是如果的意思,如果條件達成,就去執行某一件事,沒達到則去執行另一件事
IF所有條件都是布林類型,若提供的不是,PHP也會自動轉換成布林結果
IF分支:簡單IF分支、標準IF分支、複雜IF分支
(1)簡單IF分支
<?php if(條件){ //滿足條件要執行的代碼塊 } ?>
(2)標準IF分支
<?php if(條件){ //滿足條件要執行的代碼塊 }else{ //不滿足條件要執行的代碼塊 } ?>
(3)複雜IF分支
<?php if(條件1){ //滿足條件1要執行的代碼塊 }elseif(條件2){ //滿足條件2要執行的代碼塊 //....可以擁有多個條件 }else{ //不滿足條件要執行的代碼塊 } ?>
2.switch分支結構
switch通過條件匹配來選擇執行代碼的分支結構,但是switch的條件只有一個,運行機制也與if分支結構不同
(1)基本語法
<?php switch(條件變量){ case 匹配值1: //滿足條件執行的代碼塊 break; case 匹配值2: //滿足條件執行的代碼塊 break; default: //條件都不匹配執行的代碼塊 break; } ?>
(2)語法解釋
- 條件變量是一個純粹的變量,不是一個運算
- 匹配值是變量可能代表的值
- break是每個case需要的結束符號,如果沒有則會繼續向下執行
- default就是在匹配不到的情況下執行,可以沒有default,也就是匹配不到條件就不做任何事情
3.switch與if分支的差別
if較靈活,可以是變量或表達式,switch只能是變量
if是從第一個開始挨個匹配,switch則是直達目標case。多條件而言switch效率高,簡單匹配if效率高
if最多執行一個代碼塊,switch在不使用break的情況下可以執行多個條件對應的代碼塊
三、循環結構
1.for循環
for循環是一種能在循環內部初始化條件、邊界值、條件控制的循環結構
(1)基本語法
for(初始化條件;條件判定;條件變更){ //要重複執行的代碼(循環體) }
(2)解釋
初始化條件:循環定義的開始條件
條件判定:判斷條件是否符合,符合就進入循環內部
循環體:要重複執行的代碼塊
條件變更:在循環結束後,對循環條件的變化語句
循環執行:初始化條件後,重複執行條件判定、循環體、條件變更,直到條件判定結束
循環控制的條件變量,在循環結束後可以在外部使用
2.while循環
while循環是一種在循環外定義初始化條件的循環方式
(1)基本語法
while(循環條件){ //循環體 }
(2)解釋
while通常在循環外部定義循環條件(條件變量),然後在循環體中執行循環條件的變化
3.while循環與for循環的差別
沒有本質上的區別,都可以實現各種循環
for循環是將條件與循環體控制在for循環內部
while循環通常需要外部定義條件,如需手動條件變更則需要循環中出現
4.do-while循環
先做後循環,即先執行循環體,後判定條件來決定是否繼續執行
(1)基本語法
do{ //循環體 }while(條件);
(2)解釋
do後跟循環體,表示循環一開始先執行循環體,後判定while中的條件
條件符合繼續執行循環體,不符合則結束循環
5.do-while循環與while循環的差別
兩者都是執行循環,區別在於while是先判定條件,do-while是先執行循環體
也就是說,while有可能一次循環都不執行,do-while則至少會執行一次
6.foreach循環
先做後循環,即先執行循環體,後判定條件來決定是否繼續執行
(1)基本語法
foreach(數組變量 as [存儲下標的變量 =>] )存儲值的變量{ //訪問存儲下標的變量和存儲值的變量 }
(2)解釋
- 數組變量:保存了數組的變量,可以是任意PHP數組(關聯、索引、混和)
- as:關鍵字(必須有)
- 存儲下標的變量:將數組元素對應的某個
- 如果不想要下標訪問:可以省略[]下標部分,保留存儲值的變量即可
- 存儲值的變量:將數組元素對應的某個值(與下標相對應),保存到該變量中,可以循環內部訪問
- 最後一個元素對應想下標變量和值變量可以在foreach循環的外部訪問
(3)範例
<?php //遍歷數組中所有元素下標和值 $arr = array('name' => '張三', 'age' => 30, 'gender' => '男') foreach($arr as $k => $v){ //$k代表取出數組元素的下標 //$v代表取出數組元素的值 echo $k . ':' . $v . '</br'; } ?>
7.循環控制
即在循環進行之後,在循環內部(循環體)使用特定語法來選擇讓循環按照某種特定的方式去執行或著終結執行
(1)循環控制的分類
continue:表示從continue以後的循環體本次不再執行,重新開始下次循環
break:表示直接結束循環
(2)循環控制的特點
循環控制不只可以控制本層循環,而且可以透過指定循環層次
也就是continue和break後面指定要控制循環的指定層數,默認值為 1 (即本層循環,可不寫)
8.PHP標籤
為了更好方便前端人員與後端人員分開維護共同的代碼而設計的類似html標籤語法
(1)標籤語法
if:原生方式是if(){},標籤與法是if():和endif
for:原生方式是for(){},標籤與法是for():和endfor
while:原生方式是while(){},標籤與法是while():和endwhile
foreach:原生方式是foreach(){},標籤與法是foreach():和endforeach
留言列表