變量是用於臨時存儲值的容器。這些值可以是數字、文本,或者復雜得多的排列組合。變量在任何編程語言中都居於核心地位,理解它們是使用php的關鍵所在。下面將詳細介紹php中的變量
[注意]關於javascript中的變量部分移步至此
php的特性之一就是它不要求在使用變量之前聲明變量,當第一次給一個變量賦值時,才創建了這個變量
變量以$符號開頭,其後是變量的名稱。變量名稱必須以字母或下劃線開頭,對大小寫敏感
<?php $x=5; echo $x;//5 echo $X;//報錯 ?>
[注意]內置結構和關鍵字以及用戶自定義的類名和函數名是不區分大小寫的,比如echo、while、函數名稱等都可以任意大小
<?php //輸出123 echo 1; Echo 2; eCho 3; ?>
php中有一些是系統定義的,也稱為關鍵字,是php語言的組成部分、因此不能使用它們中的任何一個作為常量、函數名或類名。但是和其他語言不同的是,系統關鍵字可以在php中作為變量名稱使用,不過這樣容易混淆,所以最好還是不要以php關鍵字作為變量名稱
<?php //輸出123 $echo = 123; echo $echo; ?>
下面是常用的php關鍵詞列表
abstract and array as break callable case catch class cloneconst continue declare
default diedo echo else elseif emptyenddeclare endfor endforeach endif
endswitchendwhile eval exit extends final finally for foreach function global
goto if implements include instanceof insteadof interface isset list namespace
new or print private protectedpublic require return static switchthrow trait
try unset usevar while xor yield
一般地,變量總是傳值賦值,也就是說,將一個表達式的值賦予一個變量時,整個原始表達式的值被賦值到目標變量。這意味著,一個變量的值賦予另外一個變量時,改變其中一個變量的值,將不會影響到另外一個變量
[注意]雖然在PHP中並不需要初始化變量,但對變量進行初始化是個好習慣。未初始化的變量具有其類型的默認值——布爾類型的變量默認值是FALSE,整型和浮點型變量默認值是0,字符串型變量默認值是空字符串,數組變量的默認值是空數組
<?php $a1 = 123; $a2 = $a1; $a1 = 234; //輸出234 echo $a1; echo '<br>'; //輸出123 echo $a2; ?>
php中提供了另外一種方式給變量賦值:引用賦值。這意味著新的變量簡單地引用了原始變量。改動新的變量將影響到原始變量,反之亦然
使用引用賦值,簡單地將一個'&'符號加到源變量前即可
<?php $a1 = 123; $a2 = &$a1; $a1 = 234; //輸出234 echo $a1; echo '<br>'; //輸出234 echo $a2; ?>
一個變量的變量名可以動態地設置和使用。一個普通的變量通過聲明來設置,而一個可變變量獲取了一個普通變量的值作為這個可變變量的變量名
<?php $hi = 'hello'; $$hi = 'world'; echo "$hi $hello";//'hello world' echo "$hi ${$hi}";//'hello world' ?>
變量函數數量眾多,一些函數會在後面博文再做相關介紹。現在,主要介紹isset()、unset()和var_dump()這三個函數
var_dump()函數用來返回變量的類型和值
<?php $p = 3.14; var_dump($p);//float 3.14 $p = 'abc'; var_dump($p);//string 'abc' (length=3) ?>
unset()函數用來釋放指定的變量
<?php $p = 'abc'; echo $p;//'abc' unset($p); echo $p;//報錯 ?>
isset()函數用來檢測變量是否設置,當一個變量被設置為NULL或被釋放,則返回true,否則返回false
<?php $p = 'abc'; var_dump(isset($p));//boolean true $p = NULL; var_dump(isset($p));//boolean false unset($p); var_dump(isset($p));//boolean false ?>