首頁  >  文章  >  後端開發  >  php變數基礎簡介

php變數基礎簡介

伊谢尔伦
伊谢尔伦原創
2016-11-24 13:49:22948瀏覽

PHP 中的變數以一個美元符號後面跟著變數名稱來表示。變數名是區分大小寫的。

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

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

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

$var = 'Bob';

$Var = 'Joe';

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

not yet';     // 非法變數名稱;以數字開頭

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

$i站點is = 'mansikka';  / 合法變數名稱;用中文

?>

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

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

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

<?php
$foo = &#39;Bob&#39;;              // 将 &#39;Bob&#39; 赋给 $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 中)預設值是空字串以及陣列變數的預設值是空數組。

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

<?php
// Unset AND unreferenced (no use context) variable; outputs NULL
var_dump($unset_var);
 
// Boolean usage; outputs &#39;false&#39; (See ternary operators for more on this syntax)
echo($unset_bool ? "true\n" : "false\n");
 
// String usage; outputs &#39;string(3) "abc"&#39;
$unset_str .= &#39;abc&#39;;
var_dump($unset_str);
 
// Integer usage; outputs &#39;int(25)&#39;
$unset_int += 25; // 0 + 25 => 25
var_dump($unset_int);
 
// Float/double usage; outputs &#39;float(1.25)&#39;
$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 = &#39;bar&#39;;
var_dump($unset_obj);
?>

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:php預定義變數下一篇:php預定義變數