PHP 變量的作用域含代碼

    PHP 變量的作用域

    變量的作用域被定義為程序中可以訪問到它的范圍。愛掏網(wǎng) - it200.com換句話說,”變量的作用域是在其定義和可以訪問的程序部分內(nèi)”。愛掏網(wǎng) - it200.com

    PHP有三種類型的變量作用域:

    1. 局部變量
    2. 全局變量
    3. 靜態(tài)變量

    在函數(shù)內(nèi)部聲明的變量稱為該函數(shù)的局部變量。愛掏網(wǎng) - it200.com這些局部變量的作用域僅限于它們聲明的特定函數(shù)內(nèi)部。愛掏網(wǎng) - it200.com這意味著這些變量無法在函數(shù)外部訪問,因?yàn)樗鼈兙哂芯植孔饔糜颉?b class="xhide">愛掏網(wǎng) - it200.com

    與函數(shù)內(nèi)部聲明的變量不同,函數(shù)外部以相同名稱聲明的變量是完全不同的。愛掏網(wǎng) - it200.com讓我們通過一個(gè)示例來理解局部變量:

    文件:local_variable1.php

    <?php
        function local_var()
        {
            num = 45;  //local variable
            echo "Local variable declared inside the function is: ".num;
        }
        local_var();
    ?>
    

    輸出:

    Local variable declared inside the function is: 45
    

    文件:local_variable2.php

    <?php
        function mytest()
        {
            lang = "PHP";
            echo "Web development language: " .lang;
        }
        mytest();
        //using lang (local variable) outside the function will generate an error
        echolang;
    ?>
    

    輸出:

    Web development language: PHP
    Notice: Undefined variable: lang in D:\xampp\htdocs\program\p3.php on line 28
    

    全局變量

    全局變量是在函數(shù)外部聲明的變量。愛掏網(wǎng) - it200.com這些變量可以在程序的任何地方訪問。愛掏網(wǎng) - it200.com要在函數(shù)內(nèi)部訪問全局變量,請?jiān)谧兞壳笆褂肎LOBAL關(guān)鍵字。愛掏網(wǎng) - it200.com然而,這些變量也可以直接在函數(shù)外部訪問或使用,無需任何關(guān)鍵字。愛掏網(wǎng) - it200.com因此,無需使用任何關(guān)鍵字來訪問函數(shù)外部的全局變量。愛掏網(wǎng) - it200.com

    讓我們通過一個(gè)示例來理解全局變量:

    示例

    文件:global_variable1.php

    <?php
        name = "Sanaya Sharma";        //Global Variable
        function global_var()
        {
            globalname;
            echo "Variable inside the function: ". name;
            echo "</br>";
        }
        global_var();
        echo "Variable outside the function: ".name;
    ?>
    

    輸出:

    Variable inside the function: Sanaya Sharma
    Variable outside the function: Sanaya Sharma
    

    注意:如果不使用global關(guān)鍵字,在函數(shù)內(nèi)部嘗試訪問全局變量時(shí)會產(chǎn)生一個(gè)錯誤,提示變量未定義。愛掏網(wǎng) - it200.com

    示例

    文件:global_variable2.php

    <?php
        name = "Sanaya Sharma";        //global variable
        function global_var()
        {
            echo "Variable inside the function: ".name;
            echo "</br>";
        }
        global_var();
    ?>
    

    輸出:

    Notice: Undefined variable: name in D:\xampp\htdocs\program\p3.php on line 6
    Variable inside the function:
    

    使用$GLOBALS而不是global

    在函數(shù)內(nèi)部使用全局變量的另一種方式是預(yù)定義的$GLOBALS數(shù)組。愛掏網(wǎng) - it200.com

    示例:

    文件:global_variable3.php

    <?php
        num1 = 5;      //global variablenum2 = 13;     //global variable
        function global_var()
        {
                sum =GLOBALS['num1'] + GLOBALS['num2'];
                echo "Sum of global variables is: " .sum;
        }
        global_var();
    ?>
    

    輸出:

    Sum of global variables is: 18
    

    如果兩個(gè)變量local和global有相同的名稱,那么在函數(shù)內(nèi),局部變量比全局變量具有更高的優(yōu)先級。愛掏網(wǎng) - it200.com

    示例:

    文件:global_variable2.php

    <?php
        x = 5;
        function mytest()
        {x = 7;
            echo "value of x: " .$x;
        }
        mytest();
    ?>
    

    輸出:

    Value of x: 7
    

    注意:本地變量優(yōu)先于全局變量。愛掏網(wǎng) - it200.com

    靜態(tài)變量

    PHP有一個(gè)特性,即在變量執(zhí)行完畢并釋放內(nèi)存后會刪除變量。愛掏網(wǎng) - it200.com有時(shí)候,我們需要在函數(shù)執(zhí)行完畢后仍然保留變量。愛掏網(wǎng) - it200.com因此,變量作用域的另一個(gè)重要特性是靜態(tài)變量。愛掏網(wǎng) - it200.com我們在變量前面使用static關(guān)鍵字定義一個(gè)變量,這個(gè)變量被稱為 靜態(tài)變量愛掏網(wǎng) - it200.com

    靜態(tài)變量只存在于局部函數(shù)中,并且在程序執(zhí)行離開作用域后不釋放其內(nèi)存。愛掏網(wǎng) - it200.com通過以下示例來理解:

    示例

    文件:static_variable.php

    <?php
        function static_var()
        {
            static num1 = 3;       //static variablenum2 = 6;          //Non-static variable
            //increment in non-static variable
            num1++;
            //increment in static variablenum2++;
            echo "Static: " .num1 ."</br>";
            echo "Non-static: " .num2 ."</br>";
        }
    
    //first function call
        static_var();
    
        //second function call
        static_var();
    ?>
    

    輸出:

    Static: 4
    Non-static: 7
    Static: 5
    Non-static: 7
    

    你必須注意,在每次函數(shù)調(diào)用后,num1會定期遞增,而num2不會。愛掏網(wǎng) - it200.com這是因?yàn)?num1不是一個(gè)靜態(tài)變量,所以它在每次函數(shù)調(diào)用后釋放了內(nèi)存。愛掏網(wǎng) - it200.com

    聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
    發(fā)表評論
    更多 網(wǎng)友評論0 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 精品乱码一区二区三区在线| 国产视频福利一区| 亚洲日韩精品一区二区三区 | 亚洲啪啪综合AV一区| 本免费AV无码专区一区| 超清无码一区二区三区| 亚洲综合无码AV一区二区| 精品一区二区三区自拍图片区| 国产香蕉一区二区精品视频| 男人的天堂av亚洲一区2区| 精品理论片一区二区三区| 国产一区二区三区高清在线观看| 亚洲国产国产综合一区首页| 无码人妻精品一区二区三区9厂| 天天爽夜夜爽人人爽一区二区| 国产精品免费一区二区三区四区| 中文字幕一区一区三区| 麻豆视传媒一区二区三区| 亚洲日韩AV无码一区二区三区人| 国产日韩一区二区三区| 日韩精品一区二区三区不卡 | 精品国产一区二区三区不卡| 国产一区二区三区不卡在线看 | 亚洲大尺度无码无码专线一区| 波霸影院一区二区| 久久精品一区二区三区AV| 亚洲国产成人久久综合一区77| 骚片AV蜜桃精品一区| 一本岛一区在线观看不卡| 一区二区三区亚洲| av在线亚洲欧洲日产一区二区| 91精品一区二区| 农村人乱弄一区二区 | 全国精品一区二区在线观看| 日韩精品无码中文字幕一区二区 | 国模大尺度视频一区二区| 欧美激情国产精品视频一区二区| 中文字幕av无码一区二区三区电影| 国产精品久久久久一区二区三区 | 国产一区二区三区四| 亚洲美女视频一区|