變數有8種型別,不必死記硬背,在實際運用中加深理解
1) 整型 [integer] 数学中的整数 2) 浮点型 [float,double] 数学中的小数 3) 字符串 [string] 一串字符 4) 布尔 [boolean] 真假 5) 数组 [array] 键值对复合数据 6) 对象 [Object] [在后面的面向对象中会学到] 7) NULL 没有值 8) 资源 [resource] “吸管”
NULL是什麼? NULL型別只標註了它的型別為NULL
它的值的欄位是空的,NULL是沒有值的
$a = 3;//整型 $b = 3.14;//浮点型 $c = null;//null型 $d = 'hello';//字符串 $e = true;//布尔型 echo $D;
變數名稱的命名規格:
[a-zA-Z0-9]和底線(_)
# 1)變數名稱是區分大小寫的
2)不能以數字開頭
echo 一個不存在的變數,會報notice等級的錯誤,
所以要偵測一下這個變數是否存在
如何偵測變數是否存在?
isset — 偵測變數是否設定
已宣告的變數回傳true,未宣告的變數回傳false.
偵測一個變數是否存在: 就是看花名冊中是否有這個變數名稱
$b = null; $c = false; $d=0; $e=''; //分别检测上述变量是否存在 if(isset($a)) { echo '变量b存在'; }else{ echo '变量b不存在'; }
對於值為NULL 的變數,也傳回false,因為null沒有值未曾宣告的變數,當然也不存在
檢測一個變數,php是把它儲存成一個什麼樣的類型的對於php而言獲取它的變數類型是很簡單的因為箱子裡面已經存儲了它的變數類型
gettype — 取得變數的型別[現成的系統函數]
$a = false; echo gettype($a); $b = "1"; echo gettype($b); $c = 1.11; echo gettype($c); $d = 'hello'; echo gettype($d); $e = null; echo gettype($e);
判斷變數是否是某種型別
is_float()[is_double] 检测变量是否为浮点型 is_int()[is_integer] 检测变量是否为整型 is_string() 检测变量是否为字符串 is_object() 检测变量是否为对象 is_array() 检测变量是否为数组 is_resource 检测变量是否为资源类型 is_bool 检测变量是否是布尔型 is_null 检测变量是否为 NULL $a = 'hello'; if(is_string($a)) { echo 'a是字符串'; }else{ echo 'a不是字符串'; }
echo 字串,數字
print_r 列印層次化的資料,例如:陣列,物件
var_dump 列印變數的型別及其值[偵錯程式碼比較方便]
$a = 'hello'; $b = array(1,2,"3"); $c = false; $d = null; $e=18; $f = true; //布尔型的true会打印出1,false和null什么都不显示 echo $a,$b,$c,$d,$e,$f,'<hr>'; //print_r 打印层次化的数据,比如数组和对象 print_r($b); print_r($c); print_r($d); print_r($f); //不要用echo和print_r打印布尔型的值,因为会干扰我们 //用var_dump打印布尔和null var_dump($c); var_dump($d);
PHP中,變數的型別是可以隨時轉換的,非常的靈活最常見的是字元轉與數字之間的相互轉換, 或是數字/字串->布林值的轉換
字串到數字的轉換
從左到右截取,直道碰到不合法的數字,截取下來的部分轉換為數字
$a = '12'; $b=$a+3; var_dump($b); $a = '12.5hello'; //$a = '12.5hello99'; $b=$a+3; var_dump($b); $a = 'word12.5hello'; $b=$a+3; var_dump($b);
數字到字串的轉換
$a = 123; $b = $a . 'hello'; var_dump($b);
數字/字串/陣列等到布林型值的轉換
$b=3; if($b){ echo 'b is true'; }else{ echo 'b is false'; }
if判斷的應該是布林型的值,那數字3被轉成布林型來理解那它到底應該理解為真還是假呢?
以下值,都被理解為成布爾型值的假
'','0',0,0.0,false,NULL,array(); 而其它值,都被當成布林型的真
if('' == false) { echo '空字符串果然假'; }
empty(var) — 檢查一個變數是否為空
如果var 是非空或非零的值,則empty() 傳回FALSE
換句話說,""、0、0.0、"0"、NULL、FALSE、array( ); 以及沒有任何屬性的物件都會被認為是空的,如果var 為空,則傳回TRUE
$arr = array(); if(empty($arr)) { echo '变量为空'; }
賦值有兩種方式:
1 .傳值賦值;(兩個人看兩台電視同一個台)
2.引用賦值;(兩個人看同一台電視)
#1.傳值賦值##變量名其實不是貼在盒子上的,而是有個變數表(像班級的花名冊) 變數值和變數型別放在盒子裡面;變數表中的變數名稱指向它所對應的盒子.
$li = 23; $wang = $li; echo $li, '~', $wang;改變$li的值,$wang的值會發生變換嗎
$li = 99; echo $li, '~' ,$wang;這個賦值過程,是把$li的值,賦給$wang
2.引用賦值
$a = 'tvb'; $b = &$a; //$a,$b共同指向同一个值 echo $a,'~',$b;改變$a的值
$a = 'btv'; echo $a,'~',$b;1.7:銷毀為什麼要銷毀變數?
因為,有時比較大的陣列,或是比較大的對象特別的GD畫圖時,比較耗費資源,將它unset掉,可以及時釋放出內存
unset(變量名); 銷毀指定的變量首先從變量表(花名冊)中刪除變量名,再找到它對應的盒子也刪除掉.
$a=99; //unset($a); if(isset($a)) { echo 'a存在'; }else{ echo 'a不存在'; }注意: 引用賦值,如果兩個變數指向同一個盒子,當銷毀其中一個變數的時候,盒子是不能被銷毀的.
$a=99; $b = &$a; unset($a); echo $a,$b;//报一个notice的错误重新賦值$a一個新值
$a=18; echo $a,$b;1.8: 動態變數名稱#動態變數名稱,可以體現php非常靈活的一個地方
用變數的值去做另一個變數的名
$laoda = 'liubei'; echo $laoda , '<br >'; $paihang = 'laoda'; echo $paihang , '~' , $$paihang; //排行 $rank = 'paihang'; echo $$$rank;
以上是有關PHP變數的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!