日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開(kāi)源 > php教程 > PHP學(xué)習(xí)筆記之php變量用法

PHP學(xué)習(xí)筆記之php變量用法

來(lái)源:程序員人生   發(fā)布時(shí)間:2013-11-11 20:20:40 閱讀次數(shù):3179次

變量是php編程中必不可少的一種東西了,在php中變量為分全局變量與私有變量,下面來(lái)分享我對(duì)php變量的一些了解與用法,大家可參考參考.

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

•如何定義變量,它和C# 等語(yǔ)言有什么不同呢?

•變量區(qū)分大小寫(xiě)嗎?

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

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

分別講述吧.

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

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

實(shí)例代碼如下:

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

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

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

如 1里說(shuō)的,區(qū)分大小寫(xiě).

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

實(shí)例代碼如下:

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

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

php中的可變變量說(shuō)白了,就是拿一個(gè)變量的值解析成一個(gè)變量名,去讀那個(gè)變量名的值.

實(shí)例代碼如下:

  1. <?php 
  2.     $a = "China";  //變量a 
  3.     $b = "a";       //變量b 
  4.     $China = "I'm Chinese !"//變量China 
  5.     $f = "b";  //變量f 
  6.      
  7.     echo $a."<br />";  //輸出 China 
  8.     echo $$a."<br />"//輸出 I'm Chinese  --這里像要當(dāng)做可變變量解析,必須在前面多加一個(gè)$符號(hào) 
  9.     $a = "f";  //改變變量指向的名稱(這里就是可變變量的應(yīng)用) 
  10.     echo $$a."<br />"//經(jīng)過(guò)上面指向變量f后輸出 b 
  11.     $a = "b"//同上 
  12.     echo $$a."<br /><br />"//輸出 a 
  13.      
  14.     echo $b."<br />"//輸出 a 
  15.     echo $$b."<br />"//輸出 b 
  16.     echo $$$b."<br /><br />"//輸出 a 
  17.      
  18.     echo $f."<br />"//輸出 b 
  19.     echo $$f."<br />"//輸出 a 
  20.     echo $$$f."<br />"//輸出 b 
  21.     echo $$$$f."<br /><br />"//輸出 a 
  22.      
  23.     $$a = "China"//前面最后一個(gè)已經(jīng)更改了變量為b所謂$$a=$b 也就是改變的$b的值 
  24.     echo $b."<br />"//輸出 China 
  25.     echo $$b//輸出 I'm Chinese 
  26. ?> 

注意:可變變量不能應(yīng)用于$this和超全局變量 (php變量的作用域和其他高級(jí)編程語(yǔ)言有所不同.看代碼)

實(shí)例代碼如下:

  1. <?php  
  2.     $name = 'man';  
  3.     $$name = 'abc'//如果事先沒(méi)有man這個(gè)變量.就新建一個(gè)man變量. 然后把a(bǔ)bc賦值過(guò)去 
  4.     $$$name = 'def'
  5.     echo $man."<br />"//輸出abc 
  6.     echo $abc//輸出def 
  7.      
  8.     echo "<br /> <hr />"
  9.     function show() 
  10.     { 
  11.         global $name//這里的global并不是設(shè)置為全局變量.而是引用 
  12.         echo $name."<br />";  //輸出man 
  13.     } 
  14.      
  15.     function showtwo() 
  16.     { 
  17.         //global $name; 
  18.         //echo $name."<br />"; 
  19.         echo $GLOBALS['name']; //超全局變量數(shù)組 
  20.     } 
  21.      
  22.     show();  
  23.     showtwo(); 
  24. ?> 

變量函數(shù):

實(shí)例代碼如下:

  1. <?php 
  2.         function b() 
  3.         { 
  4.             echo "這是B";     
  5.         } 
  6.         function c($name = "China"//設(shè)默認(rèn)值 
  7.          { 
  8.             echo "這是$name"
  9.         } 
  10.          
  11.         $a = 'b'
  12.         $a(); //找值所在的函數(shù) 
  13.          $a = 'c'
  14.         $a(); ?> 

可變變量的一個(gè)典型應(yīng)用:

實(shí)例代碼如下:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  2. <html xmlns="http://www.w3.org/1999/xhtml"
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  5. <title>無(wú)標(biāo)題文檔</title> 
  6. </head> 
  7. <body> 
  8.      
  9.     <div> 
  10.         <form action="#" method="post"
  11.             <label>name: </label> 
  12.             <input type="text" name="name" /><br /> 
  13.             <label>pwd : </label> 
  14.             <input type="text" name="pwd" /><br /> 
  15.             <label>tag : </label> 
  16.             <input type="text" name="tag" /><br /> 
  17.             <input type="submit" value="提交" /> 
  18.         </form> 
  19.     </div> 
  20. <?php 
  21.      
  22.         foreach($_POST as $key=>$value
  23.         {         
  24.             //print_r($_POST); 
  25.             $$key = $value
  26.         } 
  27.         //extract($_POST); //從數(shù)組中將變量導(dǎo)入到當(dāng)前的符號(hào)表 --自行查找php手冊(cè) 
  28.         echo $name."<br />"
  29.         echo $pwd."<br />"
  30.         echo $tag."<br />"
  31.     ?> 
  32. </body> 
  33. </html> 

變量作用域 .

變量范圍

變量的范圍即它定義的上下文背景(譯者:說(shuō)白了,也就是它的生效范圍).大部分的 PHP 變量只有一個(gè)單獨(dú)的范圍.這個(gè)單獨(dú)的范圍跨度同樣包含了 include 和 require 引入的文件.范例:

實(shí)例代碼如下:

  1. <?php 
  2. $a = 1; 
  3. include "b.inc"
  4. ?>  

這里變量 $a 將會(huì)在包含文件 b.inc 中生效.但是,在用戶自定義函數(shù)中,一個(gè)局部函數(shù)范圍將被引入.任何用于函數(shù)內(nèi)部的變量按缺省情況將被限制在局部函數(shù)范圍內(nèi).范例:

實(shí)例代碼如下:

  1. <?php 
  2. $a = 1; /* global scope */ 
  3. function Test() 
  4.    echo $a/* reference to local scope variable */ 
  5. Test(); 
  6. ?>  

這個(gè)腳本不會(huì)有任何輸出,因?yàn)?echo 語(yǔ)句引用了一個(gè)局部版本的變量 $a,而且在這個(gè)范圍內(nèi),它并沒(méi)有被賦值.你可能注意到 PHP 的全局變量和 C 語(yǔ)言有一點(diǎn)點(diǎn)不同,在 C 語(yǔ)言中,全局變量在函數(shù)中自動(dòng)生效,除非被局部變量覆蓋.這可能引起一些問(wèn)題,有些人可能漫不經(jīng)心的改變一個(gè)全局變量.PHP 中全局變量在函數(shù)中使用時(shí)必須申明為全局.

The global keyword

首先,一個(gè)使用 global 的例子:

例子1. 使用 global

實(shí)例代碼如下:

  1. <?php 
  2. $a = 1; 
  3. $b = 2; 
  4. function Sum() 
  5.    global $a$b
  6.    $b = $a + $b
  7. Sum(); 
  8. echo $b
  9. ?>   

以上腳本的輸出將是 "3".在函數(shù)中申明了全局變量 $a 和 $b,任何變量的所有引用變量都會(huì)指向到全局變量.對(duì)于一個(gè)函數(shù)能夠申明的全局變量的最大個(gè)數(shù),PHP 沒(méi)有限制.

在全局范圍內(nèi)訪問(wèn)變量的第二個(gè)辦法,是用特殊的 PHP 自定義 $GLOBALS 數(shù)組.前面的例子可以寫(xiě)成:

例子2. 使用 $GLOBALS 替代 global

實(shí)例代碼如下:

  1. <?php 
  2. $a = 1; 
  3. $b = 2; 
  4. function Sum() 
  5.    $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; 
  6. Sum(); 
  7. echo $b
  8. ?>   

在 $GLOBALS 數(shù)組中,每一個(gè)變量為一個(gè)元素,鍵名對(duì)應(yīng)變量名,值變量的內(nèi)容.$GLOBALS 之所以在全局范圍內(nèi)存在,是因?yàn)?$GLOBALS 是一個(gè)超全局變量.以下范例顯示了超全局變量的用處:

例子3. 演示超全局變量和作用域的例子

實(shí)例代碼如下:

  1. <?php 
  2. function test_global() 
  3.    // 大多數(shù)的預(yù)定義變量并不 "super",它們需要用 'global' 關(guān)鍵字來(lái)使它們?cè)诤瘮?shù)的本地區(qū)域中有效. 
  4.    global $HTTP_POST_VARS
  5.    print $HTTP_POST_VARS['name']; 
  6.    // Superglobals 在任何范圍內(nèi)都有效,它們并不需要 'global' 聲明.Superglobals 是在 PHP 4.1.0 引入的. 
  7.    print $_POST['name']; 
  8. ?>   

使用靜態(tài)變量

變量范圍的另一個(gè)重要特性是靜態(tài)變量(static variable).靜態(tài)變量?jī)H在局部函數(shù)域中存在,但當(dāng)程序執(zhí)行離開(kāi)此作用域時(shí),其值并不丟失.看看下面的例子:

例子4. 演示需要靜態(tài)變量的例子

實(shí)例代碼如下:

  1. <?php 
  2. function Test () 
  3.    $a = 0; 
  4.    echo $a
  5.    $a++; 
  6. ?>   

本函數(shù)沒(méi)什么用處,因?yàn)槊看握{(diào)用時(shí)都會(huì)將 $a 的值設(shè)為 0 并輸出 "0".將變量加一的 $a++ 沒(méi)有作用,因?yàn)橐坏┩顺霰竞瘮?shù)則變量 $a 就不存在了.要寫(xiě)一個(gè)不會(huì)丟失本次計(jì)數(shù)值的計(jì)數(shù)函數(shù),要將變量 $a 定義為靜態(tài)的:

例子5. 使用靜態(tài)變量的例子

實(shí)例代碼如下:

現(xiàn)在,每次調(diào)用 Test() 函數(shù)都會(huì)輸出 $a 的值并加一.

靜態(tài)變量也提供了一種處理遞歸函數(shù)的方法.遞歸函數(shù)是一種調(diào)用自己的函數(shù).寫(xiě)遞歸函數(shù)時(shí)要小心,因?yàn)榭赡軙?huì)無(wú)窮遞歸下去.必須確保有充分的方法來(lái)中止遞歸.一下這個(gè)簡(jiǎn)單的函數(shù)遞歸計(jì)數(shù)到 10,使用靜態(tài)變量 $count 來(lái)判斷何時(shí)停止:

例子6. 靜態(tài)變量與遞歸函數(shù)

實(shí)例代碼如下:

  1. <?php 
  2. function Test() 
  3.    static $count = 0; 
  4.    $count++; 
  5.    echo $count
  6.    if ($count < 10) { 
  7.    Test (); 
  8.    } 
  9.    $count--; 
  10. ?>   

注: 靜態(tài)變量可以按照上面的例子聲明.如果在聲明中用表達(dá)式的結(jié)果對(duì)其賦值會(huì)導(dǎo)致解析錯(cuò)誤.

例子7. 聲明靜態(tài)變量

實(shí)例代碼如下:

  1. <?php 
  2. function foo(){ 
  3.    static $int = 0; // correct 
  4.    static $int = 1+2; // wrong (as it is an expression) 
  5.    static $int = sqrt(121); // wrong (as it is an expression too) 
  6.    $int++; 
  7.    echo $int
  8. ?>  

全局和靜態(tài)變量的引用

在 Zend 引擎 1 代,驅(qū)動(dòng)了 PHP4,對(duì)于變量的 static 和 global 定義是以 references 的方式實(shí)現(xiàn)的.例如,在一個(gè)函數(shù)域內(nèi)部用 global 語(yǔ)句導(dǎo)入的一個(gè)真正的全局變量實(shí)際上是建立了一個(gè)到全局變量的引用.這有可能導(dǎo)致預(yù)料之外的行為,如以下例子所演示的:

實(shí)例代碼如下:

  1. <?php 
  2. function test_global_ref() { 
  3.    global $obj
  4.    $obj = &new stdclass; 
  5. function test_global_noref() { 
  6.    global $obj
  7.    $obj = new stdclass; 
  8. test_global_ref(); 
  9. var_dump($obj); 
  10. test_global_noref(); 
  11. var_dump($obj); 
  12. ?>  

執(zhí)行以上例子會(huì)導(dǎo)致如下輸出:

NULLobject(stdClass)(0) {}類似的行為也適用于 static 語(yǔ)句.引用并不是靜態(tài)地存儲(chǔ)的:

實(shí)例代碼如下:

  1. <?php 
  2. function &get_instance_ref() { 
  3.    static $obj
  4.    echo "Static object: "
  5.    var_dump($obj); 
  6.    if (!isset($obj)) { 
  7.    // 將一個(gè)引用賦值給靜態(tài)變量 
  8.    $obj = &new stdclass; 
  9.    } 
  10.    $obj->property++; 
  11.    return $obj
  12. function &get_instance_noref() { 
  13.    static $obj
  14.    echo "Static object: "
  15.    var_dump($obj); 
  16.    if (!isset($obj)) { 
  17.    // 將一個(gè)對(duì)象賦值給靜態(tài)變量 
  18.    $obj = new stdclass; 
  19.    } 
  20.    $obj->property++; 
  21.    return $obj
  22. $obj1 = get_instance_ref(); 
  23. $still_obj1 = get_instance_ref(); 
  24. echo "/n"
  25. $obj2 = get_instance_noref(); 
  26. $still_obj2 = get_instance_noref(); 
  27. ?>  

執(zhí)行以上例子會(huì)導(dǎo)致如下輸出:

Static object: NULLStatic object: NULLStatic object: NULLStatic object: object(stdClass)(1) {  ["property"]=>  int(1)}

上例演示了當(dāng)把一個(gè)引用賦值給一個(gè)靜態(tài)變量時(shí),第二次調(diào)用 &get_instance_ref() 函數(shù)時(shí)其值并沒(méi)有被記住

生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 欧美日韩亚洲国内综合网 | 国产免费网址 | 国产一级成人 | 91精品国产色综合久久不卡98口 | 伊人国产在线播放 | 日韩中文字幕在线视频 | 精品视频免费在线播放 | 99在线精品视频 | 欧美日韩亚洲一区二区三区 | 欧美精品久久久 | 色婷婷一区二区三区 | 成人国产在线 | 欧美午夜精品一区二区三区 | 国产精品亚洲综合 | 精品成人一区二区三区 | 五月婷婷精品 | 国产日韩精品视频一区二区三区 | 在线看国产视频 | 久久免费视频1 | 国产99久久久国产精品成人免费 | 日韩aa| 成人免费激情视频 | 国产精品视频yy9099 | 九九在线免费视频 | 国产精品日韩一区二区 | 欧美日韩国产在线 | 色婷婷激情一区二区三区 | 99精品国产免费久久久久久按摩 | 国产成人在线网站 | 国产精品国产成人国产三级 | 久久一区精品 | 夜夜艹天天干 | 国产黄色在线观看 | 久久免费福利 | 嘿咻免费视频观看午夜 | 中文字幕亚洲在线 | 91视频在线观看网 | 美国三级日本三级久久99 | 国产精品永久在线 | 日韩欧美亚洲国产精品字幕久久久 | 综合精品 |