PHP教程 PHP變量的使用 頂 轉

 

PHP教程 PHP變量的使用

    PHP教程 PHP變量的使用很多朋友在編寫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.itxdl.cn/php/html/2017/rmwz_0303/1790.html

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