目錄:
0×01:自定義函數
0×02:變量範圍
0×03:參數傳遞,可變函數
0×04:遞歸函數
0×01:自定義函數
①函數定義
定義:function 函數(參數1,參數2,…,參數N){
函數體; //任意有效PHP代碼
return 表達式; //不強制寫,但寫了return 沒有表達式,則返回值爲null;return也表示代碼的結束
}
②函數的調用
注意:無論是系統給的函數,還是自己定義的,如果沒有被調用都不會執行!
函數調用後執行函數體中的代碼,執行完畢後,自動返回調用的位置繼續向下執行。
③函數的參數
形式參數由零個,一個或者多個變量組成。
實際參數由零個,一個或者多個參數組成,每個參數是一個表達式,由逗號分隔。
④函數的返回值
函數的返回值是將函數執行的結果返回給函數的調用者
如果不寫返回,則默認返回值爲NULL
0×02:變量範圍
①局部變量
也稱爲內部變量,是在函數內部定義的,當然其適用範圍僅限於函數內部,在函數外部肯定使用不了。
function test(){
$a=1
}
這個a就是局部變量
②全局變量
也稱爲外部變量,是在函數外部定義的,其使用範圍從變量定義到程序結束。
全局變量要使用需要使用global定義。
③靜態變量
在函數內部定義變量的時候使用static來定義變量。
特點:函數執行完畢之後變量不會立即消失,再次調用函數時,函數將會保留上次使用過後的只,並且只在第一次執行函數的時候初始化值。
function test(){
static $a-10;
echo ++$a;
}
test();
echo <br />;
test();
兩次輸出的值爲11,12.
0×03:參數傳遞,可變函數
①按值傳遞參數
我們在傳遞參數時,如果沒有聲明,就默認爲這種方式!這種方式下改變形式參數的值而不會影響到實際參數的值,,相當於兩者沒有關係。
②按引用傳遞參數
相當於形式參數和實際參數指的是同一個人,形式參數的改變會直接影響到實際參數的值!
③函數的默認參數
可以給形式參數設置默認值,直接賦值即可。
賦值規則:從左向右,右邊的參數必須有值,才能給左邊的賦值。
④可變長度參數列表
func_get_args() //獲取參數的類型,信息
func_get_arg() //調用此函數時,可以傳入一個值(從0開始),表示獲取第幾個實際參數的信息
func_num_args() //返回傳入參數的類型,個數
在函數內部使用,返回給我們一些參數信息。
⑤可變函數
function test(){
echo '我是菜鳥'
}
$a=test(); //把函數的名字加上引號賦給變量即可
$a() //test()
0×04:遞歸函數
遞歸函數即爲自調用函數,在函數體內直接或間接自己調用自己,但需要設置自調用的條件,若滿足條件,則調用函數本身,若不滿足則終止本函數的自調用,然後把目前流程的主控權交回給上一層函數來執行。
<?php
function test($n){
echo $n . " ";
if ($n > 0) {
test($n - 1);
} else {
echo "<-->";
}
echo $n . " ";
}
test(10);
?>
函數輸出的結果:
10 9 8 7 6 5 4 3 2 1 0 <–> 0 1 2 3 4 5 6 7 8 9 10(我也是理解了很久才明白的,有點繞不回來)
執行test(10),echo 10,然後因爲10>0,執行test(9),後面還有沒來得及執行的echo 10
所以先留來一個10,到第二步時執行test(9) ,echo 9,9>0 ,執行test(9),後面的同樣沒來得及執行 echo 9,這樣保留了一個 9,最外層時10 , 然後9,8,7,6,5,4,3,2,1
…
最後執行到0時,輸出 10 9 8 7 6 5 4 3 2 1 0 <–> 0 此時函數已經不再調用自己,開始將流程的主控權交回給上一層函數來執行。
從內而外輸出1,2,3,4,5,6,7,8,9,10,
最後的輸出結果10 9 8 7 6 5 4 3 2 1 0 <--> 0 1 2 3 4 5 6 7 8 9 10
遞歸函數就結束了。
0×05:內部(內置)函數
php提供給我們很多的現成的函數,來給我們使用。(類似於C語言的庫,使用時提前聲明) 開啓一些擴展模塊