php變數基礎簡介

來源:互聯網
上載者:User
PHP 中的變數用一個貨幣符號後面跟變數名來表示。變數名是區分大小寫。

變數名與 PHP 中其它的標籤一樣遵循相同的規則。一個有效變數名由字母或者底線開頭,後面跟上任意數量的字母,數字,或者底線。按照正常的Regex,它將被表述為:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'。

Note: 在此所說的字母是 a-z,A-Z,以及 ASCII 字元從 127 到 255(0x7f-0xff)。

Note: $this 是一個特殊的變數,它不能被賦值。

<?php

$var = 'Bob';

$Var = 'Joe';

echo "$var, $Var"; // 輸出 "Bob, Joe"

$4site = 'not yet'; // 非法變數名;以數字開頭

$_4site = 'not yet'; // 合法變數名;以底線開頭

$i網站is = 'mansikka'; // 合法變數名;可以用中文

?>

變數預設總是傳值賦值。那也就是說,當將一個運算式的值賦予一個變數時,整個原始運算式的值被賦值到目標變數。這意味著,例如,當一個變數的值賦予另外一個變數時,改變其中一個變數的值,將不會影響到另外一個變數。

PHP 也提供了另外一種方式給變數賦值:引用賦值。這意味著新的變數簡單的引用(換言之,“成為其別名” 或者 “指向”)了原始變數。改動新的變數將影響到原始變數,反之亦然。

使用引用賦值,簡單地將一個 & 符號加到將要賦值的變數前(源變數)。例如,下列代碼片斷將輸出“My name is Bob”兩次:

<?php$foo = 'Bob';              // 將 'Bob' 賦給 $foo$bar = &$foo;              // 通過 $bar 引用 $foo$bar = "My name is $bar";  // 修改 $bar 變數echo $bar;echo $foo;                 // $foo 的值也被修改?>

有一點重要事項必須指出,那就是只有有名字的變數才可以引用賦值。

<?php$foo = 25;$bar = &$foo;      // 合法的賦值$bar = &(24 * 7);  // 非法; 引用沒有名字的運算式 function test(){  return 25;}$bar = &test();    // 非法?>

雖然在 PHP 中並不需要初始設定變數,但對變數進行初始化是個好習慣。未初始化的變數具有其類型的預設值 - 布爾類型的變數預設值是 FALSE,整形和浮點型變數預設值是零,字串型變數(例如用於 echo 中)預設值是Null 字元串以及陣列變數的預設值是空數組。

Example #1 未初始設定變數的預設值

<?php// Unset AND unreferenced (no use context) variable; outputs NULLvar_dump($unset_var); // Boolean usage; outputs 'false' (See ternary operators for more on this syntax)echo($unset_bool ? "true\n" : "false\n"); // String usage; outputs 'string(3) "abc"'$unset_str .= 'abc';var_dump($unset_str); // Integer usage; outputs 'int(25)'$unset_int += 25; // 0 + 25 => 25var_dump($unset_int); // Float/double usage; outputs 'float(1.25)'$unset_float += 1.25;var_dump($unset_float); // Array usage; outputs array(1) {  [3]=>  string(3) "def" }$unset_arr[3] = "def"; // array() + array(3 => "def") => array(3 => "def")var_dump($unset_arr); // Object usage; creates new stdClass object (see http://www.php.net/manual/en/reserved.classes.php)// Outputs: object(stdClass)#1 (1) {  ["foo"]=>  string(3) "bar" }$unset_obj->foo = 'bar';var_dump($unset_obj);?>

依賴未初始設定變數的預設值在某些情況下會有問題,例如把一個檔案包含到另一個之中時碰上相同的變數名。另外把 register_globals 開啟是一個主要的安全隱患。使用未初始化的變數會發出E_NOTICE 錯誤,但是在向一個未初始化的數組附加單元時不會。 isset() 語言結構可以用來檢測一個變數是否已被初始化。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.