變數 PHP手冊筆記

2022-07-16 06:30:12 字數 2902 閱讀 3490

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 時省略...