php學習--函數(五)

目錄:
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語言的庫,使用時提前聲明) 開啓一些擴展模塊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章