PHP 第三節 變數介紹

來源:互聯網
上載者:User

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

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

變數預設總是傳值賦值。那也就是說,當將一個運算式的值賦予一個變數時,整個原始運算式的值被賦值到目標變數。這意味著,例如,當一個變數的值賦予另外一個變數時,改變其中一個變數的值,將不會影響到另外一個變數。有關這種類型的賦值操作,請參閱運算式一章。
PHP 也提供了另外一種方式給變數賦值:引用賦值。這意味著新的變數簡單的引用(換言之,“成為其別名” 或者 “指向”)了原始變數。改動新的變數將影響到原始變數,反之亦然。

使用引用賦值,簡單地將一個 & 符號加到將要賦值的變數前(源變數)。

有一點重要事項必須指出,那就是只有有名字的變數才可以引用賦值。 複製代碼 代碼如下:<?php
$foo = 25;
$bar = &$foo; // 合法的賦值
$bar = &(24 * 7); // 非法; 引用沒有名字的運算式
function test()
{
return 25;
}

$bar = &test(); // 非法
?>

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

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

預定義變數
PHP 提供了大量的預定義變數。由於許多變數依賴於啟動並執行伺服器的版本和設定,及其它因素,所以並沒有詳細的說明文檔。一些預定義變數在 PHP 以命令列形式運行時並不生效。

從 PHP 4.1.0 開始,PHP 提供了一套附加的預定數組,這些陣列變數包含了來自 網頁伺服器(如果可用),運行環境,和使用者輸入的資料。這些數組非常特別,它們在全域範圍內自動生效,例如,在任何範圍內自動生效。因此通常被稱為自動全域變數(autoglobals)或者超全域變數(superglobals)。(PHP 中沒有使用者自訂超全域變數的機制。)超全域變數羅列於下文中;但是為了得到它們的內容和關於 PHP 預定義變數的進一步的討論以及它們的本質,請參閱預定義變數。而且,你也將注意到舊的預定義數組($HTTP_*_VARS)仍舊存在。自 PHP 5.0.0 起, 用 register_long_arrays 設定選項可禁用 長類型的 PHP 預定義變數數組。

變數範圍
變數的範圍即它定義的上下文範圍(也就是它的生效範圍)。大部分的 PHP 變數只有一個單獨的範圍。這個單獨的範圍跨度同樣包含了 include 和 require 引入的檔案。

PHP 的全域變數和 C 語言有一點點不同,在 C 語言中,全域變數在函數中自動生效,除非被局部變數覆蓋。而PHP中的局部變數不會被全域變數覆蓋,如果使用會是變數的預設初始值。這可能引起一些問題,有些人可能不小心就改變了一個全域變數。PHP 中全域變數在函數中使用時必須申明為global。

使用靜態變數
變數範圍的另一個重要特性是靜態變數(static variable)。靜態變數僅在局部函數域中存在,但當程式執行離開此範圍時,其值並不丟失。

聯繫我們

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