中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP函數介紹

發布時間:2020-07-19 20:35:28 來源:網絡 閱讀:354 作者:pcn01 欄目:web開發

PHP函數介紹



基本使用:


函數定義形式:

        function 函數名(形參1,形參2,...) {

            //函數體(代碼塊);

        }

    函數調用形式:

        本質上就是使用一個名字來達到執行其中函數中的的作用。通常可以分兩種情形的調用:

        第一種:沒有返回值的函數,則調用語句是獨立語句

            函數名(實參1,實參2,...); //實參個數應該跟形參有匹配性


        第二種:有返回值的函數,則調用語句,通常會“混雜”在別的語句中,并將該調用語句當作一個“數據”來使用:

            A: $v1 = 函數名(); //賦值給其它變量,這里省略實參語法,下同

            B: $v1 = 函數名()*3+6; //參與運算,然后再賦值

            C: echo 函數名(); //直接輸出

            D: echo 函數名()*3+6; //參與運算,然后再輸出

            E: $v1 = 函數名2(函數名(),實參2,實參3,...); //當作實參使用


函數調用流程分析:

    開始調用:實際參數傳數據給形式參數

    程序執行流程進入到函數中(一個獨立的運行空間),跟全局執行空間是隔離的

    按常規的程序邏輯執行函數中的代碼

    如果碰到return語句,則終止函數的執行,跳回函數開始調用的位置

    如果執行到函數的最后位置,也同樣跳回函數開始調用的位置

其運行流程原理圖如下:

PHP函數介紹

函數參數問題:

    一個函數,

    在定義時,有形式參數(形參:parameter)

        1:形參一定是一個變量名,

        2:該變量名只能是在該函數中有效的變量名,

        3:而且只在該函數調用并執行時有效,函數結束,通常這些變量也就“銷毀”

    在調用時有實際參數(實參:argument)

        實參就是一個“實際數據”,該數據可以是一個“直接數據”(比如5,"abc"),也可以是一個變量中存儲的數據。

        實參的作用是將其數據”賦值給“形參變量

        實參跟形參之間通常應該有個“一一對應”關系


    默認值參數:

        定義一個函數的時候,在形式參數的位置,可以給形式參數設定默認值,此時就可以稱為默認值參數。比如:

PHP函數介紹

    

注意:

    默認值不能是對象或資源類型

    默認值只能是常量表達式,或常量,不能是變量

即:如下語法是正確的:function f1($v = 3) {}, function f1($v = __LINE__) {},

    如下語法是錯誤的:function f1($v = 3+1) {} , $m = 3,function f1($v = $m) {},


函數的參數傳值問題:

    實際上,函數的參數傳值問題,跟變量之間的傳值是一樣的規則(模式):默認是值傳遞。

    如果實參本身就是“直接數據”,則不存在傳值問題,而是簡單的“賦值”

    傳值問題只發生在實參是變量的情形:

    PHP函數介紹

    我們也可以讓某個參數(形參)以引用傳遞的方式來傳值:

    引用傳遞的形參(實參),在函數內部改變其值,在函數外面的實參,也會相應做修改

    PHP函數介紹

    注意:如果某個形參設定為引用傳遞,此時,實參只能使用變量,否則會出現語法錯誤,如:

    PHP函數介紹


參數的數量問題:

    1:函數的參數的數量可以是0個或多個 -- 具體多少個,不是語法問題,而是應用問題

    2:通常,實際參數的數量應該跟形式參數的數量一致

    3:但是,在第二條的基礎上,如果形式參數中有默認值,則實際參數的對應項可以少省略   

        即:實參的個數,至少應該不少于形參中的非默認值參數的個數


但:我們還有一種特殊的處理函數參數的用法:自由參數數量

    定義時可以不給定形參,但調用時,卻又可以給定任何個數的實參

在系統中,var_dump()這個函數也有同樣的使用效果:

    $var_dump($v1);

    var_dum($v1,$v2,$v3);  //這樣也是可以的

這種應用的實現,是依賴于系統中的3個系統函數來達到的:

    func_get_args();    //獲得一個函數的接收到的所有實參數據,并結果是一個數組

    func_get_arg(n);    //獲得一個函數所接收到的第n個實參數據(n從0開始)

    func_num_args();    //獲得一個函數所接收到的所有實參數據個數


函數的返回值:

    通常來說,一個函數中使用reture語句,并其后帶一個數據(直接數據,變量數據,表達式結果數據)則該函數就會返回該數據到“調用的位置":

    PHP函數介紹

    通常情況下,函數返回的數據都是以”值傳遞“的形式返回,函數中的變量的值”拷貝“一份,然后返回給接收的位置的相應代碼(賦值,輸出,計算)。

    但我們也可以讓函數中的變量的數據的值,以”引用傳遞“的方式返回,形式如下:

        定義函數:

            function $函數名(parameter1,parameter2,...) { //函數名前有個引用符號

                $result = 0; //初始化

                ......

                return $result; //此時返回數據,只能是變量

            }

        調用函數:

            $v1 = $函數名(argument1,argument2,...); //引用返回的函數,自然是指有返回值

    PHP函數介紹


函數的其他形式:

    1:可變函數 -- 就是函數名“可變”,其實跟可變變量一樣道理

        $str1 = "f1"; //只是一個字符串,內容為"f1"

        $v1 = $str1(3,4); //形式上看起來是一個變量后面加上括號,則其本質是該變量的“內容”(f1)后面加括號,即這里是調用函數f1(3,4)。實際應用中,常常是需要根據“用戶給定”的數據,來決定調用哪個函數,比如:

        function jpg() {處理jpg圖};

        function png() {處理png圖};

        function gif() {處理gif圖};

        $fileName = get_fileName() {獲取用戶上傳的圖片名};

        $houzhui = get_houzhui($fileName);

        $houzhui();

    2:匿名函數 -- 就是沒有名字的函數,其有兩種表現形式:

        表現形式1:

            $f1 = function() {...函數體;}; //這里的匿名函數定義形式上沒有名字,但其實又將之賦值給了變量$f1;使用時,就跟“可變函數”一樣了:$v1 = $f1();

    PHP函數介紹

        表現形式2:

            調用其他函數(匿名函數,argument1,argument2,...);

            說明:

                1:此形式的匿名函數只有定義的函數體(無函數名)

                2:此形式的匿名函數只能作為其他函數調用時的參數(其他函數通常有特定用處)

                3:此匿名函數會在調用其他函數的“過程中”被執行。

            能夠使用(匿名)函數當作實參的函數,并不多!

            其中有一個常見的是:call_user_func_array();

            其使用形式為:

                call_user_func_array(匿名函數,數組);

            含義:將數組當作匿名函數的若干個實參,傳遞到該匿名函數中,并可以從該匿名函數中返回數據,執行該匿名函數。

        PHP函數介紹 

    

變量的作用域:

    通常說作用域,有2個:

        局部作用域:只能在所定義的函數范圍內使用

        全局作用域:在函數的“外部”范圍使用

            -- php中,局部和全局作用域是不重疊的。

            -- js中,全局作用域是包括局部作用域的。

PHP函數介紹

PHP函數介紹

    但還有兩個:

        超全局:就是函數的內部與外部都可以使用。

                超全局變量只有系統內部預定義的那幾個,我們不能在程序中創建超全局變量


        靜態局部作用域:其實也是局部,但多一個特征:數據能夠在函數退出后仍然保持不丟失。


局部訪問全局變量的特定語法:

    1:在局部范圍內使用 global 關鍵字對全局變量進行一次“聲明”,則就可以使用了

        PHP函數介紹

        說明:

            1:實際上,函數中的 global 語句,其實是創建了一個跟外部變量同名的局部變量,并通過“引用”的方式指向了外部變量的數據區

      PHP函數介紹

            實例:

     PHP函數介紹

           2:在函數中(局部范圍),使用$GLOBALS超全局數組來引用(使用)全局變量

              $GLOBALS超全局數組的作用是用于存儲所有全局變量的數據:變量名為下標,變量值為對應元素值。

     PHP函數介紹

              但通過$GLOBALS操作全局變量,是直接操作(而不是引用操作),即如果unset該對應元素,則全局變量對應變量也被unset掉:

      PHP函數介紹

            3:實際上,我們還可以在函數內部直接使用$GLOBALS數組,添加元素的方式來創建全局變量,自然也就類似局部使用全局

       PHP函數介紹


全局訪問局部變量的特定語法:

    1:通過引用傳遞的方式向形參傳遞一個引用實參變量

            $v1 = 10;

            function f1(&$p1,$p2) {...} //$p1是函數的形參,也即就是函數的內部(局部)變量

            $v2 = f1($v1,10); //此時我們認為$v1就可以使用函數中$p1的值。

    2:使用函數的引用返回形式:見前面引用的方式返回數據

    3:函數中使用global關鍵字來首次引用一個全局變量,則函數結束后在全局范圍就可以使用該變量了

    PHP函數介紹


    

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通河县| 邛崃市| 霸州市| 长春市| 惠水县| 霍山县| 安岳县| 茶陵县| 石景山区| 资源县| 集安市| 开江县| 诸城市| 邯郸市| 嘉祥县| 永寿县| 依安县| 太仆寺旗| 河池市| 若羌县| 莫力| 通海县| 广汉市| 黔江区| 上蔡县| 化州市| 来凤县| 宁都县| 章丘市| 临泉县| 阿拉善左旗| 康保县| 鄂尔多斯市| 定襄县| 隆化县| 威远县| 德化县| 从江县| 浮山县| 宜城市| 县级市|