學有小成-php基礎語法-04
一流程控制
計算機中的流程控制可分為三種:
順序結構
程序自上而下的一個執行過程。
分支結構
根據某一條件將程序轉向不同的分支處執行。
循環
計算機最大的特點計算機速度快,計算機主要用於解決重復性的問題。
二分支結構
1if分支
①、單分支
語法:
if(表達式){
//語句體
}
說明:
當表達式成功時,執行語句,如果不成功直接結束if結構,繼續其後的語句執行。
②、雙分支
語法:
if(表達式A){
語句體A
}else if(表達式B){
語句體B
}
說明:
當表達式A成功時,執行語句體A,如果不成立來判斷表達式B,如果表達式B執行語句體B
當任何一個語句體執行結束後,不再會去進行其他表達式的判斷。
示例:
③、多分支
語法:
if(表達式A){
語句體A
}else if(表達式B){
語句體B
}else if(表達式C){
語句體C
}else{
缺省語句體
}
說明:
自上而下的判斷各個表達式,當某個表達式成立時,執行相應的語句體
語句體執行結束後,不會再判斷其他的表達式。
當所有的表達式都不成立,執行缺省語句體。
2switch結構
當一個問題需要判斷的條件比較多時,Php又提供了一個switch分支結構。
語法:
switch(變量){
case 值1:
語句體1
break;
case 值2:
語句體2
break;
case 值3:
語句體3
break;
default:
缺省語句體
}
說明:
根據switch後的變量與case後的值的匹配情況,將程序轉向不同的語句體執行。
break可以省略。
當一個語句體執行結束後,如果沒有遇到break,則會執行其後的語句體,不會判斷其後case的值。
示例:
if與switch的區別:
if結構的條件可以表示一個範圍。
switch結構主要用於表示一個具體的值。
三循環結構
1for循環
循環結構主要是用於解決重復性的問題。
語法:
for(循環控制變量初始化;表達式;循環控制變量的更改){
//循環體
}
說明:
循環控制變量初始化;表達式;循環控制變量的更改 循環3要素。
a、首先執行
b、判斷表達式是否成立,如果不成立直接結束循環體,繼續其後的語句執行。
c、如果成立,執行循環體。
d、循環體執行結束後,執行循環控制變量的更改,
e、往復執b、c、d,直到循環控制變量的值主表達式不成立時,結束循環結構。
對於for循環結構,要求大家能夠作到以下幾點:
l 能夠使用for循環,模擬任意次數的循環。
l 能夠使用循環控制變量來模擬數據或規則
循環嵌套:
提示:
雙層循環的嵌套主要解決具有行列特性的問題。
使用程序語言解決問題的思路:
首先要判斷使用何種流程控制。
再將問題中的條件轉換為計算機能夠表達的式子。
示例:
課堂案例:
百錢百雞,100文錢買100只雞,公雞5文1只,母雞3文1只,小雞1文3只。
窮舉法:
2while循環
語法:
while(表達式){
//循環體
}
說明:
只要是循環必須有3要素組成。但是while循環的語句結構中僅出現了表達式。
另外兩個要素需要自己設計。
首先判斷表達式是否成立?
不成立,直接結束循環結構,繼續其後的語句執行。
成立,執行循環體,循環體執行結束後,再來判斷表達式。循環往復的執行。直接到表達式不成立。
示例:
for與while的區別
l 對於for循環結構,主要用於循環次數已知或根據某一條件可以確定。
l while用於循環次數未知的循環。
3do...while
語法:
do{
//循環體
}while(表達式)
說明:
首先執行循環體
循環體執行結束後,判斷表達式是否成立,
如果不成立,直接結束循環結構,繼續其後的語句執行,
如果成立,再執行循環體。往復的執行,直到表達式不成立。
示例:
4循環的結束與退出
①、continue
語法:
continue 【n】;
說明:
n的取值是一個整數,如果省略默認是1,
n主要是用在循環嵌套的情況下。
結束當前循環結構的本次循環,繼續上n層循環結構的下一次循環。
示例:
②、break
語法:
break 【n】;
說明:
n的取值是一個整數,如果省略默認是1,
n主要是用在循環嵌套的情況下。
直接結束上n循環循環結構
示例:
四流程控制語句的標簽語法
php在將php代碼嵌入到html文檔時,又提供了一種標簽語法。
①、if標簽語法:
標準語法:
<?php if(...):?>
<?php endif?>
簡化語法:
<?php if(...){?>
<?php }?>
②、for標簽語法
標準語法:
<?php for():?>
<?php endfor?>
簡化語法:
<?php for(){?>
<?php }?>
③、while的標簽語法
標準語法:
<?php while():?>
<?php endwhile?>
簡化語法
<?php while(){?>
<?php }?>
五文件載入
1介紹
在實際開發過程中,經常會在一個php文件中引入其他的文件。
被引入的文件可以是html也可以是php文件。
2語法
①、require
require(文件名)
require_once(文件名)
②、include
include(文件名)
include_once(文件名)
示例:
在引用文件時,主要有兩種使用目的:
當前文件(php)有數據,想在被引用的文件(html)中顯示。
在當前文件(php)中想使用,另一個文件(php)中的功能性代碼:
3引入路徑的問題
在實現項目中,對於html文件,我是不允許用戶直接請求,而是指向一個php文件,讓php文件來引處這個html文件。
當一個php文件引入一個html文檔時,html文件本身也會引入一些其他的文件,如:圖片文件、css文件、js文件。這時會發生路徑更改的問題。路徑要以當前php文件所在的路徑為起點。
4include和require的區別
include 在引入文件時,如果被引入的文件不存在則會報錯,但程序還會繼續向下執行。
require在引入文件時,如果被引入的文件不存在,則會上斷程序的執行。
經驗法則:
require一般用於引入php文件。因為php裏面一般書寫的是功能性的代碼。
include一般用於引入html文檔。
include、require VS include_conce、require_once的區別
include_once、require_once每次在引入文件時,都會檢查所要引入的文件之前有沒有被引入過,如果有引入過就不會再引入。
include、require沒有這樣的檢查過程。
5__DIR__\__FILE__
__FILE__ 用於獲取文件所在的完整文件名。
__DIR__ 用於獲取文件所在的路徑。
__FILE__與__DIR__並不會被引入後所更改。永遠代碼__FILE__與__DIR__所在的文件的文件名與文件夾名。
六錯誤處理
1錯誤的分類
①、編譯錯誤
在編譯的過程中發生的錯誤就編譯錯誤,編碼錯誤是最容易解決的。很多是由於書寫錯誤。
②、執行錯誤
在編譯通過後,在執行階段發生的錯誤。此種錯誤一旦發生,會根據錯誤的等級,來決定是否中斷程序的執行。
③、邏輯錯誤
由於程序的邏輯不嚴謹,而產生的錯誤。此種錯誤是最難排查的。程序可以正常執行,但最終的結果並不是我們所期望的。
2錯誤代碼
在php的錯誤處理機制中,每一種錯誤都使用了一個錯誤標識,錯誤標識是常量的形式存在。
①、獲取錯誤代碼
②、系統錯誤
E_ERROR 致命錯誤,一旦發生就會中斷程序的執行
E_WRRING 警告錯誤,一旦發生並不會中斷程序的執行,
E_NOTICE 提示錯誤,一旦發生並不會中斷程序的執行,
E_PARSE 編譯錯誤,一旦發生就會中斷程序的執行
③、自定義錯誤
E_USER_ERROR 用戶級的致命錯誤,一旦發生就會中斷程序的執行
E_USER_WRRING 用戶級的警告錯誤,一旦發生並不會中斷程序的執行,
E_USER_NOTICE 用戶級的提示錯誤,一旦發生並不會中斷程序的執行,
④、所有的錯誤
E_ALL
3錯誤的觸發
①、系統錯誤的觸發
程序員無法幹涉系統錯誤的觸發,系統錯誤由php自已檢測並觸發的。
②、自定義的錯誤
trigger_error();
語法:
trigger_error(msg,type);
說明:
msg 錯誤描述信息
type 自定義錯誤的代碼(E_USER_ERROR、E_USER_WARNING、E_USER_NOTICE)
示例:
提示:
使用錯誤處理機制的好處是,可以將錯誤記錄起來。默認會被記錄到apache的/logs/error.log文件中。
4錯誤的控制設置
php錯誤控制可以在php.ini中進行。我們可以控制錯誤是否顯示,還可以控制顯示哪一類的錯誤。
①、控制是否顯示錯誤
display_errors=on 顯示錯誤
display_erros =off 關閉錯誤的顯示
②、控制顯示哪一類錯誤
error_reporting =
5錯誤的日誌文件設置
我們還可以控制是否記錄錯誤,以及錯誤日誌的記錄位置。
①、是否記錄記錄
log_errors=on 記錄錯誤
log_errors=off 不記錄錯誤
②、錯誤記錄的位置
如果沒有設置error_log默認是記錄到apache的錯誤日誌中\logs\error.log
error_log=syslog 會記錄到操作系統的日誌中
error_log=文件名 記錄到自定義的位置
學有小成-php基礎語法-04