您好,登錄后才能下訂單哦!
1. PHP內置類型有
四種標量類型 bool int float(或稱double) string
兩種復合類型 array object
兩種特殊類型 resource NULL
2.相關命令
查看類型 gettype
判斷類型 is_xxx
強制轉換類型 (xxx)變量 或者settype
獲取變量的當前類型值
xxxval();
如intval,boolval,floatval,strval
is_numeric檢測變量是否為數字或數字字符串
3.詳細介紹
-------------------------------------
bool:TRUE or FALSE
以下值被認為是FALSE
bool false
int 0
float 0.0
string “” or “0”
arrray []
NULL null或尚未被賦值的變量
從空標記生成的SimpleXML對象
其他都是TRUE(包括任何source資源)
注意:-1和其他非零值(不論正負都為TRUE)
所以可擴展為 -1>false為真
--------------------------------------
integer:集合{…-2,-1,0,1,2}中的一個數
二進制,十六進制,八進制均為int類型標量
注意:二進制表達的integer在5.4起可用
二進制 0b
八進制 0
十六進制 0x
注意:32位電腦的int占4個字節,每個字節8個單元,所以最大值為21億左右,64位為9223372036854775807,計算方式為最大的正數是 01..1 后面31個1, 結果是 2147483647,最小的負數是 10...0后面31個0, 計算方法是用補碼, 結果是 -2147483648, 而0xffffffff 是 -1
注意:如果向八進制傳遞一個非法數字(8,9)則本位以及后面的位將會被忽略(如012954)的八進制值為012,十進制值為10
注意:如果INT溢出將會被自動轉換為float類型
注意:不要將未知的分數強制轉換為int,不然結果將會不可預料
如(int) ( (0.1+0.7) * 10 )的值為7,而不是8.
--------------------------------------
float:浮點的形式有以下幾種
LNUM [0-9]+ DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*) EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})
浮點的長度與平臺設置有關
注意:永遠不要相信浮點數結果精確到了最后一位,也永遠不要比較兩個浮點數是否相等。因為只要浮點數換算成二進制是無窮盡的,那么它的實際值是略小于它本身的,如0.1實際值為0.0999999…(二進制為0.000110011001100…),如何要比較兩浮點數是否相等,可以控制精度為小數點后XX位 如0.000001,然后將兩數相減和此極小值比較,如果小于此值,則認為在XXX位精度的情況下,這兩個浮點數是相等的。
注意:有時數學運算的結果為NaN,它代表任何不同值,所以不能用于與其他任何類型值比較(包括自身),可用is_nan判斷。
注意:INF是無窮大的意思。
--------------------------------------
string:郵一系列的字符組成,每個字符占一個字節,因此PHP只支持256的字符集,不支持unicode。
表示方式為‘’,“”,<<<‘eof’xxxeof(xxx中的變量不會被解析),<<<“eof”xxxeof(xxx中的變量可以被解析).
提示:string最大可以達到2GB。
提示:PHP_EOL代表換行。
提示:string中的變量最好用{}括起來。
{}可擴展至類靜態變量:{${beers::$ale}},{${beers::softdrink}}
提示:PHP 的字符串在內部是字節組成的數組。因此string可以被當作Array處理,每一個字符可當作一個元素。
注意:用超出字符串長度的下標寫入將會拉長該字符串并以空格填充。 如$a = "abc“ 如果操作$a[4] = “d”,那么字符串長度將會被擴展到5,下標3的位置將會以空格填充。
注意:下標必須為整數或可轉換為整數的字符串。
大部分PHP值(除了resource)可以轉變成STRING,即串行化,可用serialize來實現。
--------------------------------------
array:是一個有序映射。
5.4起用[]代替array()。
鍵名如果是合法整型值的字符串,會被轉換,“8”=8,但“08”不能被轉換,因為它不是合法的十進制。
浮點鍵名會被轉換為整型,但小數會被舍去。
布爾鍵名會被轉換為0,1。
null鍵名被轉換為“”。
數組和對象不能成為鍵名。
如果出現相同的鍵名,則后面的會覆蓋前面的。
新建,修改,刪除(unset)。
--------------------------------------
object:新建一個對象 new abc;
將其他任何類型的值轉換為對象,將會產生一個public scalar屬性,值為變量的值。(數組轉換為obj將會得到與數組結構相同的,元素都為public的對象)
--------------------------------------
resource:一種特殊變量,保存到外部資源的一個引用。
常用函數為:get_resource_type取得資源類型。
由于資源類型變量保存有為打開文件、數據庫連接、圖形畫布區域等的特殊句柄,因此將其它類型的值轉換為資源沒有意義。
自動回收,所以不必手動銷毀,但持久數據庫連接比較特殊,它不會被回收掉。
--------------------------------------
NULL:表示NULL。
被賦值為NULL,尚未被賦值,UNSET 都會得到NULL。
使用 (unset) $var 將一個變量轉換為 null 將不會刪除該變量或 unset 其值。僅是返回 NULL 值而已。
--------------------------------------
callback回調類型:call_user_func call_user_func_array 實際運用中才得知。
--------------------------------------
字符與ascii之間的轉換可用函數(C++可直接將字符轉換為INT取得節ascii碼)
ord,chr
4.類型轉換的判別
進制轉換的函數為:base_convert(值,當前進制,目標進制)
提示:如果字符串轉進制則當前進制和目標進制都一樣 如base_convert("0b11",2,2);則可轉換成二進制,但需要理解的是,轉換后的類型仍然是string,但可以進行位運算了。
如果有一個是float,則運算都轉為float。否則都是int
注意:轉換為二進制(binary)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。