認識php函數
- 函數可以使程序更具模塊化,擁有良好的結構;
- 函數分爲內置函數和自定義函數;
- 函數名不區分大小寫,不過在調用函數的時候,通常使用其在定義時相同的形式;
- php不支持函數重載, 所以自定義函數不能和內置函數重名;
函數參數的傳遞
1.值傳遞(傳值):函數內對參數值的改變不會影響函數外部的值;
2.引用傳遞(傳址):有些情況下,可能希望在函數體內對參數的修改在函數體外也能反映;
- 使用引用傳遞參數要在參數前加上&符號;
- 變量本身傳入,傳入後的變量與原變量建立聯繫,函數體內變量的變化,會影響到原變量本身;
3.默認參數值:可以爲參數指定默認值,在沒有提供其他值的情況下,則將默認值自動賦;
函數中變量的作用域
1.局部變量
- 函數體內定義的變量爲局部變量,只在函數體內可見;局部變量的作用域,從聲明它的那條語句開始到函數結束;
function(){
$b = 5 ;
echo "$b";
}
echo "$b";
以上代碼只有函數內的"$b"能夠輸出,函數外的"$b"獲取不到
2.全局變量
- 函數體外定義的變量爲全局變量,與局部變量相反,全局變量可以在程序的任何地方訪問;
- 如果在函數體中需要使用全局變量,使用 global 關鍵字訪問;
- 全局變量的作用域:從聲明它的那條語句開始到文件末尾;
function quanju(){
//聲明$b爲全局變量,否則就是局部變量,注意聲明與賦值不能寫在同一行,先聲明後賦值
global $b;
$b = 5;
}
quanju();
echo();
以上代碼,函數外能輸出函數裏面的變量
3.靜態變量
- 局部變量在函數退出時會被撤消,與局部變量不同,靜態變量在函數退出時不會丟失值,並且再次調用函數時還能保留這個值;
- 在變量名前面加上 static 關鍵字就可以聲明一個靜態變量
function fn(){
static $c =0; //相當於將$c return出去
$c ++;
echo "$c";
}
fn();
fn();
fn();
- 以上代碼的$c在fn重新調用時不會被改變爲0;而是保留上次運行結束時的值
函數庫(include,require)
通常將常用的函數組織到函數庫中,可以在以後類似的應用程序中重複使用。
- 調用函數庫中的函數時使用include()或require()將函數庫包含到腳本中;
-
includeonce()/requireonce() 的作用與include()/require()相同,不過它會首先驗證是否已經包含了該文件,如果已經包含,則不再執行;
- 新建一個"show.php"文件
function show(){ echo "include加載成功" }
- 在另一個主文件件中訪問新建的文件,可以調用該函數
include("show.php"); show();