PHP入門培訓教程 PHP變數的使用

來源:互聯網
上載者:User

標籤:

 

 

   很多朋友在編寫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 "Fromchild_a:".$int_a;

  }

  function child_b(){ //調用全域變數

  global $int_a; //聲明調用全域變數

  echo "Fromchild_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 "vvvis:".$vvv; //vvv is:int_a

  echo "int_ais:".$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的變數也會越來越完善...

 

PHP入門培訓教程 PHP變數的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.