PHP共有8中數據類型:
類型名稱
類型表示
取值
bool
布爾型
true,false
integer
整型
-2147483647-2147483648
string
字符串型
字符串長度取決於機器內存
float
浮點型
最大值1.8e308
object
對象
通過new實例化 $obj=new person();
array
數組類型
$arr=array(1,2,3,4,5,6);//一維數組
resourse
null
空值
null
布爾型bool :
對於其他類型我們可以使用(bool)或者(boolean) 進行強制轉換 eg:(bool)1=true;
以下幾種情況在強制轉化的時候默認為false:
轉換
結果
布爾型的false var_dump((bool) false)
bool(false)
整型0 var_dump((bool) 0);
bool(false)
浮點型0.0 var_dump((bool) 0.0);
bool(false)
字符串‘0' var_dump((bool) '0');
bool(false)
空數組$arr=array(); var_dump((bool) $arr)
bool(false)
不包含任何成員變量的空對象只在PHP4使用,PHP5中為true
bool(false)
NULL或者尚未賦值的變量var_dump((bool) NULL)
bool(false)
從沒有任何標記(tags)的XML文檔生成的SimpleXML 對象
bool(false)
字符串'0.0'轉換結果為bool(true)
注:-1和其他非零值(不論正負)都是true
整型integer:
整型的范圍-2147483647--2147483647 ,如果超過該值會自動轉換成float型
我們可以使用echo PHP_INT_SZIE 輸出integer的字長,和機器有關。echo PHP_INT_MAX 輸出integer的最大值
PHP中沒有整除運算 如果執行 1/2 會產生 float的0.5 如果想實現整除效果,則可以使用 (int)(1/2)=0 或者使用round(25/7)=4
強制轉化成整型 (int)或者(integer) bool型 ture 轉換成 1 ,false轉換成0
浮點型float:
取值范圍 最大值 :1.8e308 不知道最小值是多少? 求高手告知
浮點數的字長也和機器有關, 好像沒有PHP_FLOAT_SIZE 啊,求高手告知如何的到浮點數字長
字符串類型string:
定義字符串的4種方法:
1.單引號
2.雙引號
3.heredoc語法結構
4.nowdoc 語法結構(PHP5.3.0之後)
單引號
單引號定義了最原始的字符串,裡面的所有內容都按字符串處理,如果字符串中包含單引號則可以用\轉義
雙引號
雙引號定義的字符串會解析一些特殊字符(\n,\b)和變量
可以將變量放置在雙引號中的方式來代替將變量轉換成 字符串(string):
$num=10;
$str = "$num"; //$str為字符串型的10
heredoc語法結構
<<<標示符
字符串本身
標示符
結束時的標示符必須在一行的開始位置,而且標示符的定義格式也必須按照PHP定義的規則,只能包含數字,字母,下劃線,並且不能以數字下劃線開頭
結束標示符哪一行不允許有其他字符,可以在標示符後面添加一個分號,切分號前後也不能有tab或空格,否則PHP將無法解析該標示符,會繼續向下查找標示符,如果在文件結尾前仍沒有找到則會產生一個錯誤
heredoc就是一個沒有使用雙引號的雙引號,就是裡面可以包含雙引號,且不用轉義,而且可以解析特殊字符和變量
nowdoc 語法結構
<<<'標示符'
字符串本身
nowdoc的開始標示符必須使用單引號括起來,結束標示符和其他規則都和heredoc一樣
nowdoc就是沒有使用單引號的單引號,nowdoc包含的字符串會原樣輸出,裡面包含的特殊字符和變量不會被解析
如果雙引號中包含數組變量中的幾種情況
//我們先定義以下數組
復制代碼 代碼如下:
[php]
$arr=array(
'one'=>array(
'name'=>'jiangtong',
'sex'=>'男'
),
'two'=>'zhaohaitao',
'three'=>'fanchangfa'
);
上面是的數組中第一個元素二維的,後兩個是一維的,我們訪問一維的時候下面幾種方式:
復制代碼 代碼如下:
[php]
echo "$arr[two]"//key沒有單引號
echo "$arr['two']"//key有單引號 會出錯,如果我們改成 echo "{$arr['two']}"; 則可以正確輸出結果
echo "{$arr[two]}"//有雙大括號,但是key沒有單引號 這種情況PHP會先尋找有沒有常量banana,有的話則將其
替換,由於沒有two常量則出錯<span style="font-family: 'Courier New'; "> </span>
可見在訪問一維數組的時候 要麼不加key不加引號(考慮到第三種情況啊),加了就要被{}括起來,可以全不加。
多維數組測試
復制代碼 代碼如下:
[php]
echo "$arr[one][name]"; //輸出結果為Array[name] 可見它返回了一個數組,只解析了一維
echo"{$arr['one']['name']}";//輸出結果為jiangtong
在多維數組的訪問中必須使用了大括號key必須使用雙引號括起來
數組類型
在字符串類型中已經提到,被大括號括起來的,如果不加key引號,是合法的,那麼PHP首先會查找是否有名為key的常量,有的話就會被替換,沒有的話會產生一個找不到常量的警告才按普通字符串處理,所以建議大家一定加單引號
轉換成數組使用(array)type 或者array(type) ,但是如果將只有一個值的轉換成數組,會得到一個元素的數組,且下標為0,將NULL轉換成數組會得到空的數組
我們可以在遍歷數組的時候改變數組的值,在PHP5.0以上可以使用引用實現
復制代碼 代碼如下:
[php]
$arr=array('a','b','c','d','e' );
foreach($arr as &$value)
{
$value=strtoupper($value);
echo $value;
}//輸出結果 ABCDE
Object對象類型
實例化對象我們使用new 加入有一個person類,我們可以通過以下方式
復制代碼 代碼如下:
[php]
$objPerson=new person();
強制轉換 (object): 如果將一個對象轉化成對象那麼它沒有任何改變,對於其他任何值將會實例化一個stdclass的對象,如果該值為NULL,則會實例化一個空對象,如果 將數組轉換成對象那麼會將數組的key作為對象的屬性,value為屬性值,其他類型的值則名為scalar的成員變量包含該值
復制代碼 代碼如下:
[php]
$arr=array('one'=>'a','two'=>'b' );
$obj=(object)$arr;
echo $obj->one //輸出結果為a;
注:這是由key的數組如果沒有字符key的數組,我不知道如何訪問,誰知道希望告訴小弟一下,謝謝。
對於其他值
復制代碼 代碼如下:
[php]
$obj1=(object)'jiang';
echo $obj1->scalar;//輸出結果jiang
NULL 空類型
null大小寫不敏感,NULL類型只有一個取值,表示一個變量沒有值,下面三種情況變量被認為為NULL
1.被賦值為NULL
2.尚未被賦值
3.被unset();
PHP type comparison tables
Comparisons of $x with PHP functions
Expression |
gettype() |
empty() |
is_null() |
isset() |
boolean :if($x) |
$x = "";
string
TRUE
FALSE
TRUE
FALSE
$x = null
NULL
TRUE
TRUE
FALSE
FALSE
var $x;
NULL
TRUE
TRUE
FALSE
FALSE
$x is undefined
NULL
TRUE
TRUE
FALSE
FALSE
$x = array();
array
TRUE
FALSE
TRUE
FALSE
$x = false;
boolean
TRUE
FALSE
TRUE
FALSE
$x = true;
boolean
FALSE
FALSE
TRUE
TRUE
$x = 1;
integer
FALSE
FALSE
TRUE
TRUE
$x = 42;
integer
FALSE
FALSE
TRUE
TRUE
$x = 0;
integer
TRUE
FALSE
TRUE
FALSE
$x = -1;
integer
FALSE
FALSE
TRUE
TRUE
$x = "1";
string
FALSE
FALSE
TRUE
TRUE
$x = "0";
string
TRUE
FALSE
TRUE
FALSE
$x = "-1";
string
FALSE
FALSE
TRUE
TRUE
$x = "php";
string
FALSE
FALSE
TRUE
TRUE
$x = "true";
string
FALSE
FALSE
TRUE
TRUE
$x = "false";
string
FALSE
FALSE
TRUE
TRUE
Loose comparisons with ==
|
TRUE |
FALSE |
1 |
0 |
-1 |
"1" |
"0" |
"-1" |
NULL |
array() |
"php" |
"" |
TRUE
TRUE
FALSE
TRUE
FALSE
TRUE
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
TRUE
TRUE
FALSE
TRUE
1
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
0
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
TRUE
FALSE
TRUE
TRUE
-1
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
"1"
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
"0"
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
"-1"
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
NULL
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
TRUE
TRUE
FALSE
TRUE
array()
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
TRUE
FALSE
FALSE
"php"
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
""
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
TRUE
Strict comparisons with ===
|
TRUE |
FALSE |
1 |
0 |
-1 |
"1" |
"0" |
"-1" |
NULL |
array() |
"php" |
"" |
TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
1
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
0
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
-1
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
"1"
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
"0"
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
"-1"
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
NULL
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
array()
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
"php"
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
""
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE