變數的宣告
PHP變數宣告必須是$(美元符號)+變數名稱命名,同時在=(賦值運算子)後進行賦值
宣告後的變數不是僅可以在一個使用,它還可以在當前頁面所有開啟使用,包括include和require引入的文件,當然在函數中是局部變量,另當別論
在使用該變量之前,我們通常使用isset()和empty()兩個函數, isset()是檢查變數是否設置,empty()則是檢查變數是否為空,unset()則是釋放變量,在這裡推薦使用!empty()存在且不能為空
php變數的命名大小寫區分,且不能是關鍵字
Demo
<?php //声明变量a $a="hello world"; ?> <?php //判断变量a是否存在,如果存在,就打印,echo为打印函数 if(!empty($a)){ echo "变量存在"; echo $a; } //销毁变量a unset($a); if(empty($a)){ echo "变量不存在!"; } ?>
可變變數
可變變數的意思是一個變數的變數名稱可以動態的設定和使用。一個普通的變數透過宣告來設置,然後可變變數取得這個普通變數的值作為這個可變變數的變數名,可變變數宣告是以$$開頭。
Demo
<?php //声明变量$a $a="hello"; //声明可变变量$$a $$a="world"; //将会全部打印"hello world" echo "$a $hello"; echo "$a ${$a}" ?>
變數的引用賦值
PHP的引用就是在變數或函數、物件等前面加上&符號。它其實相當於變數的一個別名,改變其中任一個變數的值,另一個變數的值就會跟著改變。但是它也不像C語言中的變量引用賦值那樣,如果我用unset()函數銷毀其中任意一個變量,另一個變量依舊存在。
Demo
<?php //声明变量$a $a="hello"; //声明变量$b $b=&$a; $b="world"; //将会打印"word world" echo "$a $b"; unset($a); //将会打印world echo $b; ?>
變數的型別
PHP支援八種原始型別。具體的分為四種標量類型:string(字串)、integer(整數)、float(浮點型,還有更高精度的double)和boolean(布林型),兩種複合類型: array(數組)和object(物件),兩種特殊類型resource(資源)和NULL。數組和物件的聲明可以參考Demo中的格式。這裡的陣列我們用array()來構建,它的參數是按照key=>value格式用逗號隔開的。
Demo
<?php $bool=true; $str="hello"; $int=123; $float=1.2e3;//相当于1.2乘以10的三次方 $arr=array("key1"=>12,"key2"=>true); //声明对象类型 class Person{ var $name; function say(){ echo "I am happy"; } } $p=new Person(); $p->name="Tom"; $p->say(); //var_dump()直接输出变量类型 var_dump($bool); var_dump($str); var_dump($int); var_dump($float); var_dump($arr); var_dump($p); //输出结果为 //I am happy //bool(true) string(5) "hello" int(123) float(1200) //array(2) { ["key1"]=> int(12) ["key2"]=> bool(true) } //object(Person)#1 (1) { ["name"]=> string(3) "Tom" } ?>
資源類型
資源是一種特殊變量,保存了到外部資源的一個引用。資源是透過專門的函數來建立和使用的。由於資源類型變數保存有為開啟檔案、資料庫連線、圖形畫布區域等的特殊句柄,因此將其它類型的值轉換為資源沒有意義。
Demo
<?php //以写的方式打开本目录下的1.txt文件 $file=fopen("1.txt","w"); //连接本地数据库 $mysql=mysql_connect("localhost","root","root"); ?>
NULL類型
在PHP中被認為為NULL類型的有三種情況
將變數直接賦值為NULL
聲明的變數未被賦值
被稱為函數
偽型別PHP偽型有三種,分別是:mixed混合型別、number數位型別、callback回呼型別。 mixed說明一個參數可以接受多種不同的類型,但並不是所有的類型,例如str_replace()可以接受字串和數組,gettype()可以接受任何類型。 number參數可以接受integer整數和float浮點型。callback回呼類型是諸如call_user_func()函數就可接收使用者自訂的函數作為一個參數。 callback函數不但可以是一個函數,也可以是一個物件的方法,靜態類別的方法也可以。一個php函數用函數名稱字串來傳遞,可以傳遞任何內建的或使用者自訂的函數,除了例如array(),echo(),empty(),eval(),exit(),isset(),list (),print(),unset()等這些內建函數。
自動型別轉換
這種轉換通常發生在不同類型混合運算時,它遵循以下原則
如果是布林類型,將true變成1,false變成0
如果是null,將會變成數值0
如果是float和int混合運算,轉換成float型別
如果是字串,則提取字串中的數字,例如"123.45abc"變成123.45,若沒有數字,則是0
強制類型轉換
PHP 中的類型強制轉換和C 中的非常像:在要轉換的變數之前加上用括號括起來的目標類型。允許的強制轉換有:
(int),(integer) - 轉換成整數
(bool),(boolean) - 轉換成布林型
(float),(double),(real) - 轉換成浮點型
(string) - 轉換成字串
(array) - 轉換成陣列
(object) - 轉換成物件
同時,在使用中我們可以透過一些函數判斷變數類型。判斷變數類型常用的函數主要有下列幾個:
gettype()傳回變數型別、is_array()、is_bool()、is_float()、is_double()、is_integer()、is_null()、is_numeric()、is_object( )、is_resource()、is_string()和is_callable()判斷是否為有效函數