• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    PHP變量的使用

    發布: 2007-7-14 19:53 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 8次 | 進入軟件測試論壇討論

    領測軟件測試網     很多朋友在編寫PHP程序的時候有時候對變量總有著不能確定的問題,而且也有很多問題就是因為
    變量的處理不當所造成的。這里就PHP變量系統說以下,不足之處還望指教。

        PHP的變量分為全局變量與局部變量。

        何為全局變量?

        學過C/JAVA/C++之類的朋友一定了解main(){}內聲明的變量所達的區域了~,而PHP為解釋性語句并非
    編譯語言,我們也知道PHP不存在main(){}主體,從何聲明?其實PHP頁面本身就是個main(){}只要是在頁面內
    而非在函數內聲明的變量我們都稱其為全局變量...例如:

    <?php
        $int_a=0;            //初始全局變量$int_a將其賦值為0
        echo "全局變量:".$int_a;    //打印全局變量

        function child_a(){        //局部變量的使用
            $int_a=0;        //這里是局部變量,雖然與全局變量名相同但此變量僅在child_a內可見
            echo "From child_a:".$int_a;
        }
        
        function child_b(){        //調用全局變量
            global $int_a;        //聲明調用全局變量
            echo "From child_b:".$int_a;
        }
    ?>


    從上面的一個例子,我們可以很簡單明了的看明白PHP中全局與局部變量之間的差距...

        另我們高興的是PHP提供了其他的CGI語言的服務器全局變量...這些變量當頁面調入的時候就已經由系統自動生成

        這些全局變量包含在

        $_SERVER($HTTP_SERVER_VARS)        (服務器提供的相關變量服務)    PHP4.1.0
        $_ENV($HTTP_ENV_VARS)            (保存相關環境變量)    PHP4.1.0
        $_POST            (保存使用Form post方法提交的變量)    PHP4.1.0
        $_GET            (保存使用Form GET/URI方法提交的變量)    PHP4.1.0
        $_COOKIE        (保存使用頁面獲得的COOKIE數據)    PHP4.1.0
        $_SESSION        (保存站點內會話變量)    PHP4.1.0
        $HTTP_POST_VARS        (同$_POST,按linuxforum.net一帖對此的評論是$_POST的效率比其更高)    PHP4.1.0
        $HTTP_GET_VARS        (同$_GET,評論同上.)    PHP4.1.0
        $_REQUEST        (包含了$_GET,$_POST,$_COOKIE,$_FILES)    PHP4.1.0
        $_FILES            (嚴格的說此變量已經包含在$_POST和$HTTP_POST_VARS,主要是獲得form post方式提交的file變量)    PHP4.1.0
        $GLOBALS        (保存所有全局變量的數組)    PHP3.0.0
        $php_errormsg        (此全局變量必須在php.ini中將其打開:track_error=on)

        
        以上變量為系統全局變量,您不需要聲明他們就可以直接使用,當然了,您的PHP版本一定要高于或等于他們后面所標注的版本號。
        在使用這些變量的時候,您無需用global關鍵字來聲明他們...


    <?php
        function g_p(){
            echo "Welcome ".$_SERVER[REMOTE_ADDR].". nice meet you I am".$_SERVER[SERVER_ADDR];
            // Welcome 192.168.0.3. nice meet you I am 192.168.0.1
        }
    ?>



        自定義變量,PHP提供的自定義變量并不象編譯型語系那樣,需要先聲明。而是直接使用,但如果一個不合理的程序變量的雜亂無規
    我想過個幾天后也許你自己都不會讀明白的~,如果您只需要一個過度變量,您可以隨意的去聲明他只要不與其他變量發生沖突,而且符合命名規則
    用后建議使用unset將其刪除..


        PHP還提供了變量的變量這個概念

        就如以前有人發帖問過這個問題
        下面將這個表達一下~,其實這是個最簡單的變量的變量方法,我想如果對C里的指針和地址比較熟悉的人理解這個會很快的.

    <?php
    $vvv="int_a";
    $int_a="vvv";
    echo "vvv is:".$vvv;        //vvv is:int_a
    echo "int_a is:".$int_a;    //int_a is:vvv
    echo '$$vvv is:'.$$vvv;        //$$vvv is:vvv
    echo '$$int_a is:'.$$int_a;    //$$int_a is:int_a    
    ?>


        另:在一開始接觸PHP的時候被他的所輸即可得(就是提交變量可以直接使用起name標記的值來做為變量使用.),隨著時間的推移,網絡的發展
    PHP.net開發小組發現在這里竟然有不少人在做文章。例:

    <?php
    for($int_a;$int_a<100;$int_a++){
        echo "I am $int_a \r\n<br>";
    }
    ?>

    以上程序按邏輯來說,程序象系統申請一新變量$int_a由于未賦默認值,系統將默認給$int_a賦于0,此時應該打印100行 i am ...
    但是如果有人傳遞過來這個變量呢???比如說http://url/count.php?int_a=99此時系統將只打印一行。我這里只是簡單的說一下
    如果這個程序是操作你的數據庫,或操作你的機密性文件,你所需要的是私有變量而非外界傳遞過來的變量...,我個人覺得PHP開發小組
    在這個問題上的處理是借鑒了編譯語言的優點..

    不過不用擔心如果你覺得頁面不受外界變量的影響,而且暫時也無須提高到這個安全度的話您可以使用
    if($_GLOBAL_ARRAY){//判斷是否存在全局變量的數組
        extract($_GLOBAL_ARRAY,EXTR_PREFIX_SAME,"_global_array");    //將數組內變量導入到當前的變量表內,如果發生沖突則將全局變量前加上_global_array前綴
    }
    由于PHP小組對系統的安全提高,因此分發出來的版本自php4.2.X后已經默認將register_global選項設置為OFF,如果您不需要使用的話可以將其打開ON

        總結:

            PHP是個很優秀的WEB CGI語言,PHP的免費與很多數據庫的緊密結合,他能夠完成其他服務器腳本所完成的特定服務,ASP所提供的中間件,在PHP
    中可以通過dl()進或使用靜態擴展將其加載進PHP。而PHP的變量也會越來越完善...


                                                學有所限,如有不正還請指教。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>