php中的變數用乙個美元符號後面跟變數名來表示。變數名是區分大小寫的,並且出現中文可能也是合法的。
變數預設總是傳值賦值。php也提供了另外一種方式給變數賦值:引用賦值。這意味著新的變數簡單的引用(換言之,"成為其別名" 或者 "指向")了原始變數。改動新的變數將影響到原始變數,反之亦然。使用引用賦值,簡單地將乙個&符號加到將要賦值的變數前(源變數)。注意,只有有名字的變數才可以引用賦值。
php擁有大量預定義變數,許多變數依賴與伺服器,某些預定義變數以命令列形式執行時並不生效。
php提供了一套附加的預定陣列,這些陣列變數包含了來自web伺服器(如果可用),執行環境,和使用者輸入的資料,通常被稱為自動全域性變數(autoglobals)或者超全域性變數(superglobals)。
這裡的變數範圍指的是,它定義的上下文背景,也就是它的生效範圍。變數的範圍包含了include和require引入的檔案。
php的全域性變數和c語言有一點點不同,在c語言中,全域性變數在函式中自動生效,除非被區域性變數覆蓋。php中全域性變數在函式中使用時必須宣告為global。
<?php
$a = 'hello';
function test()
// test();
include 'b.inc';
b.inc
內容如下:
<?php
echo 'hello';
?>
該程式能夠正常輸出hello
,但是被注釋掉的test()
不能正常解析,因為變數$a是未定義的。
若在某個函式中想使用全域性變數,可以通過下面兩種方式。
global關鍵字
global $a, $b;
在函式中宣告全域性變數後,對任一變數的所有引用都會指向其全域性版本。
$globals超全域性變數陣列
$globals['b'] = $globals['a'] + $blobals['b'];
用法同global關鍵字相似。
靜態變數僅在區域性函式域中存在,但當程式執行離開此作用域時,其值並不丟失。並且,只在宣告時初始化一次,每次呼叫函式並不會覆蓋靜態函式的值。
靜態變數在宣告中用表示式的結果對其賦值會導致解析錯誤,靜態宣告是在編譯時解析的。
<?php
function test()
$cnt--;
}test();
和c語言的static相似,下面這段c**也可以把0~9十個數字依次輸出。
#include void test(void)
cnt--;
}int main(void)
對於變數的static和global定義是以引用的方式實現的。
可變變數是php語言中的一種特殊用法,不知其他語言存不存在。
簡而言之,可變變數就是,乙個可變變數獲取了乙個普通變數的值作為這個可變變數的變數名。
<?php
$a = 'hello';
$$a = 'world';
echo "$a $$a"; // hello $hello
echo "$a $"; // hello world
當可變變數用於陣列時,可能會出現模稜兩可的問題。比如,寫下$$a[1]
,編譯器會報錯的,你想要表達的意思需要用下面兩種方式替換掉。
$
$a[1]作為乙個變數
$[1]
$$a作為乙個變數並取出變數中索引為1的值。
當表單提交給php指令碼時,表單中的資訊自動在指令碼中可用,可以通過$_get
、$_post
和$_request
訪問。
注意,變數名中的點和空格被轉換成下劃線。例如變成了
$_request["a_b"]
,下面的示例中展示了表單中識別符號的使用。
表單處理檔案process.php
。
<?php
var_dump(isset($_post['my.text']));
var_dump(isset($_post['mytext']));
var_dump(isset($_post['my_text']));
var_dump($_post['my_text']);
因為句點不是php變數名中的合法字元,輸出結果如下所示。
boolean false
boolean false
boolean true
string 'h3' (length=2)
magic_quotes_gpc
配置指令影響到get/post/cooie的值,這個特性已經廢棄移除,輸入中的單引號、雙引號、反斜槓和null字元都不會被轉義。若需要轉義可使用addslashes()
,若需要反引用乙個引用的字串需要使用stripslashes()
。
php也懂得表單變數上下文中的陣列,下面的例子使用了更複雜的表單變數,並將表單post給自己並在提交時顯示資料。
<?php
if(isset($_post['action'])) else else else
setcookie('cnt', $cnt, time() + 3600);
cookie資料在相應的cookie陣列中可用,如果將多個值賦給乙個cookie變數,必須將其賦成陣列。
(全文完)
變數 PHP手冊筆記
原文 變數 php手冊筆記 php中的變數用乙個美元符號後面跟變數名來表示。變數名是區分大小寫的,並且出現中文可能也是合法的。變數預設總是傳值賦值。php也提供了另外一種方式給變數賦值 引用賦值。這意味著新的變數簡單的引用 換言之,成為其別名 或者 指向 了原始變數。改動新的變數將影響到原始變數,反...
變數與常量 PHP手冊筆記
php中的變數用乙個美元符號後面跟變數名來表示。變數名是區分大小寫的,並且出現中文可能也是合法的。變數預設總是傳值賦值。php也提供了另外一種方式給變數賦值 引用賦值。這意味著新的變數簡單的引用 換言之,成為其別名 或者 指向 了原始變數。改動新的變數將影響到原始變數,反之亦然。使用引用賦值,簡單地...
PHP學習手冊 PHP標記 變數型別
1 如果檔案內容是純 php 最好在檔案末尾刪除 php 結束標記。這可以避免在 php 結束標記之後萬一意外加入了空格或者換行符,會導致 php 開始輸出這些空白,而指令碼中此時並無輸出的意圖。2 檔案末尾的 php 段結束標記可以不要,有些情況下當使用 include 或者require 時省略...