日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
PHP7:PHP變量和常量的定義

如果對(duì)于變量和常量的定義,你會(huì)注意幾個(gè)方面呢?你可能會(huì)想到:

成都創(chuàng)新互聯(lián)自2013年起,先為鶴山等服務(wù)建站,鶴山等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為鶴山企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

◆ 如何定義變量,它和C# 等語言有什么不同呢?

◆ 變量區(qū)分大小寫嗎?

◆ PHP的變量還有其他重要的嗎?

◆ 常量和變量的定義一樣嗎?

分別講述吧。

1.如何定義變量,它和C# 等語言有什么不同呢?

PHP 中的變量用一個(gè)美元符號(hào)后面跟變量名來表示。變量名是區(qū)分大小寫的。例如:

 
 
 
  1.  $var='Jim';  
  2.   $VAR='Kimi;  
  3.   echo "$var,$VAR";//輸出“Jim,Kimi"  
  4.  ?> 

你可能還關(guān)心變量的命名,其實(shí)和大多數(shù)語言一樣。

2. 變量區(qū)分大小寫嗎?

如 1里說的,區(qū)分大小寫。

注意,需要說明的一點(diǎn)是自PHP4以來,引入了引用賦值的概念,其實(shí)和多數(shù)語言的引用類似,不過我覺得最類似的是C/C++.因?yàn)樗灿玫搅?&"符號(hào)。例如:

 
 
 
  1. 2 $foo = 'Bob';              // 賦值'Bob'給foo  
  2. 3 $bar = &$foo;              // 通過$bar引用.注意&符號(hào)  
  3. 4 $bar = "My name is $bar";  // 修改 $bar  
  4. 5 echo $bar;  
  5. 6 echo $foo;                // $foo 也修改了.  
  6. 7 ?>  

和其他語言一樣,只能對(duì)有變量名的變量才可以引用。

3. PHP其他重要點(diǎn)

預(yù)定義變量

預(yù)定義變量在PHP是一個(gè)重要的概念。 PHP 提供了大量的預(yù)定義變量。由于許多這些變量依賴于運(yùn)行的服務(wù)器的版本和設(shè)置,及其它因素,所以并沒有詳細(xì)的說明文檔。一些預(yù)定義變量在 PHP 以命令行形式運(yùn)行時(shí)并不生效。

需要注意的是 在PHP 4.2.0 以及后續(xù)版本中,PHP 指令 register_globals 的默認(rèn)值為 off。這是 PHP 的一個(gè)主要變化。讓 register_globals 的值為 off 將影響到預(yù)定義變量集在全局范圍內(nèi)的有效性。例如,為了得到DOCUMENT_ROOT 的值,將必須使用 $_SERVER['DOCUMENT_ROOT'] 代替 $DOCUMENT_ROOT,又如,使用 $_GET['id'] 來代替 $id 從 URL http://www.example.com/test.php?id=3 中獲取 id 值,亦或使用$_ENV['HOME'] 來代替 $HOME 獲取環(huán)境變量 HOME 的值。

從 PHP 4.1.0 開始,PHP 提供了一套附加的預(yù)定數(shù)組,這些數(shù)組變量包含了來自 web 服務(wù)器(如果可用),運(yùn)行環(huán)境,和用戶輸入的數(shù)據(jù)。這些數(shù)組非常特別,它們?cè)谌址秶鷥?nèi)自動(dòng)生效,例如,在任何范圍內(nèi)自動(dòng)生效。因此通常被稱為自動(dòng)全局變量(autoglobals)或者超全局變量(superglobals)。(PHP 中沒有用戶自定義超全局變量的機(jī)制。)超全局變量羅列于下文中;而且,你也將注意到舊的預(yù)定義數(shù)組($HTTP_*_VARS)仍舊存在。自 PHP 5.0.0 起,長(zhǎng)格式的 PHP 預(yù)定義變量可以通過設(shè)置 register_long_arrays 來屏蔽。

下表是PHP的超全局變量:

超全局變量描述
$GLOBALS包含一個(gè)引用指向每個(gè)當(dāng)前腳本的全局范圍內(nèi)有效的變量。該數(shù)組的鍵名為全局變量的名稱。從 PHP 3 開始存在 $GLOBALS 數(shù)組。
$_SERVER變量由 web 服務(wù)器設(shè)定或者直接與當(dāng)前腳本的執(zhí)行環(huán)境相關(guān)聯(lián)。類似于舊數(shù)組 $HTTP_SERVER_VARS 數(shù)組(依然有效,但反對(duì)使用)。
$_GET經(jīng)由 URL 請(qǐng)求提交至腳本的變量。類似于舊數(shù)組 $HTTP_GET_VARS 數(shù)組(依然有效,但反對(duì)使用)。
$_POST經(jīng)由 HTTP POST 方法提交至腳本的變量。類似于舊數(shù)組 $HTTP_POST_VARS 數(shù)組(依然有效,但反對(duì)使用)。
$_COOKIE經(jīng)由 HTTP Cookies 方法提交至腳本的變量。類似于舊數(shù)組 $HTTP_COOKIE_VARS 數(shù)組(依然有效,但反對(duì)使用)。
$_FILES經(jīng)由 HTTP POST 文件上傳而提交至腳本的變量。類似于舊數(shù)組 $HTTP_POST_FILES 數(shù)組(依然有效,但反對(duì)使用)
$_ENV執(zhí)行環(huán)境提交至腳本的變量。類似于舊數(shù)組 $HTTP_ENV_VARS 數(shù)組(依然有效,但反對(duì)使用)。
$_REQUEST經(jīng)由 GET,POST 和 COOKIE 機(jī)制提交至腳本的變量,因此該數(shù)組并不值得信任。所有包含在該數(shù)組中的變量的存在與否以及變量的順序均按照 php.ini 中的 variables_order 配置指示來定義。此數(shù)組在 PHP 4.1.0 之前沒有直接對(duì)應(yīng)的版本。參見 import_request_variables()。
$_SESSION當(dāng)前注冊(cè)給腳本會(huì)話的變量。類似于舊數(shù)組 $HTTP_SESSION_VARS 數(shù)組(依然有效,但反對(duì)使用)

#p#

變量的應(yīng)用范圍

每個(gè)變量都有應(yīng)用范圍,那么PHP是怎么定義的呢?還是先看看下面代碼吧:

 
 
 
  1.  1 
  2.  2  $var=0;  
  3.  3  function test($index)  
  4.  4  {  
  5.  5      $var=$var+1;  
  6.  6      echo "The ".$index." number is ".$var."
    ";  
  7.  7  }  
  8.  8  test(1);  
  9.  9  test(2)  
  10. 10 ?> 

你認(rèn)為以上的代碼會(huì)顯示什么結(jié)果呢?

如果你認(rèn)為是下面:

結(jié)果1:

 
 
 
  1. The 1 number is 1  
  2. The 2 number is 2 

不好意思,你的結(jié)果是錯(cuò)誤的。

其實(shí)正確的結(jié)果應(yīng)該是:

結(jié)果2

 
 
 
  1. The 1 number is 1  
  2. The 2 number is 1 

那么你從其中發(fā)現(xiàn)了什么呢?我們可以知道雖然第2行的代碼定義在外面,但第5行的變量和它是不一樣的。第5行的變量?jī)H在這個(gè)函數(shù)里使用。進(jìn)一步的,如果我想調(diào)用第一行的變量而顯示結(jié)果2.代碼可以如下:

 
 
 
  1.    
  2.  
  3.   $var=0;  
  4.   function test($index)  
  5.   {  
  6.       global $var;  
  7.       $var=$var+1;  
  8.       echo "The ".$index." number is ".$var."
    ";  
  9.   }  
  10.   test(1);  
  11.   test(2)  
  12.  ?> 

這個(gè)代碼段和上面的代碼段有何區(qū)別呢?注意第5行,多了一個(gè)global關(guān)鍵字。明白了吧。

那么還有沒有其他方法呢?答案是肯定的。

代碼如下:

 
 
 
  1.    
  2.   $var=0;  
  3.   function test($index)  
  4.   {  
  5.         
  6.       $GLOBALS["var"]=$GLOBALS["var"]+1;  
  7.       echo "The ".$index." number is ".$GLOBALS["var"]."
    ";  
  8.   }  
  9.   test(1);  
  10.   test(2)  
  11.  ?> 

代碼有什么特殊的嗎?那就是用到了$GLOBALS這個(gè)超全局變量。

PHP也有靜態(tài)變量的說法。不過靜態(tài)變量一般用在函數(shù)里,只能是局部變量了??纯聪旅娲a吧:

 
 
 
  1.    
  2.  
  3.  function Test()  
  4.  {  
  5.     static $a = 0;  
  6.     echo $a."
    ";  
  7.     $a++;  
  8.  }  
  9.  Test();  
  10.  Test();  
  11.  ?>  

結(jié)果為

 
 
 
  1. 1  

PHP還有一個(gè)相當(dāng)令人興奮的特性:可變變量

所謂可變變量,就是一個(gè)變量的變量名可以動(dòng)態(tài)的設(shè)置和使用。

看看下面的例子:

 
 
 
  1.  
  2.   $a="hello";  
  3.   $hello="world";  
  4.   echo $a." ".$$a;  
  5.  ?>  

輸出的結(jié)果居然是hello,world.太神奇了。$$a其實(shí)就是$hello,因?yàn)?a的值是hello。

變量就這多了。下面看看常量。

常量

PHP的常量是不是前面加const呢?讓我們看一看。

不是的。在PHP必須用下面的方式定義。

bool define ( string name, mixed value [, bool case_insensitive] )

name 為常量名,value為常量的值。case_insensitive]為大小寫敏感。默認(rèn)為敏感。例如:

 
 
 
  1.    
  2.  
  3.  define("CONSTANT", "Hello world.");  
  4.  echo CONSTANT; // outputs "Hello world."  
  5.  echo Constant; // outputs "Constant" and issues a notice.  
  6.    
  7.  define("GREETING", "Hello you.", true);  
  8.  echo GREETING; // outputs "Hello you."  
  9.  echo Greeting; // outputs "Hello you."  
  10.    
  11.  ?>  

常量和變量不同:

◆ 常量前面沒有美元符號(hào)($);

◆ 常量只能用 define() 函數(shù)定義,而不能通過賦值語句;

◆ 常量可以不用理會(huì)變量范圍的規(guī)則而在任何地方定義和訪問;

◆ 常量一旦定義就不能被重新定義或者取消定義;

◆ 常量的值只能是標(biāo)量。

原文:http://blog.csdn.net/jpr1990/article/details/7072281


網(wǎng)站名稱:PHP7:PHP變量和常量的定義
當(dāng)前URL:http://m.5511xx.com/article/cdposgc.html