程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP數據類型的總結分析

PHP數據類型的總結分析

編輯:PHP綜合
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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved