有幾個月開發經驗的朋友,都知道php屬於弱類型語言,即不會強制開發者使用數據時指定其數據類型。
下面個人總結一下,php對數據類型的處理方式。
一。先說強制類型轉換(也可理解成手動類型轉換或指定數據類型):
PHP強制數據類型轉換有三種轉換方式:
1.用強制類型關健字
•(int)、(integer):轉換成整形
•(float)、(double)、(real):轉換成浮點型
•(string):轉換成字符串
•(bool)、(boolean):轉換成布爾類型
•(array):轉換成數組
•(object):轉換成對象
•(binary):字節碼
示例:
|$num1=3.14;
|$num2=(int)$num1;
|var_dump($num1); //輸出float(3.14)
|var_dump($num2); //輸出int(3)
2.類型轉換函數
intval()、floatval()、strval() 、settype(mixed var,string type)
示例:
|$str="123.9abc";
|$int=intval($str); //轉換後數值:123
|$float=floatval($str); //轉換後數值:123.9
|$str=strval($float); //轉換後字符串:"123.9"
|$num4=12.8;
|$flg=settype($num4,"int");
|var_dump($flg); //輸出bool(true)
|var_dump($num4); //輸出int(12)
二。再說默認類型轉換,規則:
+號,自動按數字運算。
.號,自動按字符串運算.
示例:
|$i=1;
|$a=$i.'a'; //結果1a
|$c=$i+'a';//結果1
|0==“abc"; //結果是true , 因爲"abc”按轉成數字參加比對
值的類型確定數據類型
$foo = "0"; // $foo is a string (ASCII 48)
$foo++; // $foo is the string "1" (ASCII 49)
$foo += 1; // $foo is now an integer (2)
$foo = $foo + 1.3; // $foo is now a double (3.3)
$foo = 5 + "10 Little Piggies"; // $foo is a double (15),因爲後面的“10。。。”轉成數據類型是10
$foo = 5 + "10 Small Pigs"; // $foo is an integer (15)
int,float,doblue 之間就長運算。
$foo = 1+1.34 ; // $foo 是float
三。類型相關的其它函數:
gettype 獲得變量類型
settype 指定變量類型
get_resource_type 獲得資源類型
四。有絕對的必要了解一下運算符優先級
最高優先級爲一元運算符new , [ ] , ! , ~ , ++ , -- , 類型轉換
接下來是二元算術運算符* , / , % , + , - , 字符串連接符.
再接下來是二元位運算符 << , >>
再接下來是比較操作符符< , > , <= , >= , == , !=(<>) , === , !==
再接下來是位運算符和邏輯運算符& , ^ , | , && , ||
再接下來是三目運算符?:
再接下來是函數調用
再接下來是賦值操作符= , += , -= , *= , /= , .= , %= , &= , |= , ^= , ~= , <<= , >>=
再接下來是and , xor , or,(這個我比較鬱悶的,書的前面寫了and和&&,or和||只是表達形式不一樣,但是這裏很明顯優先級是不一樣)
最後是一個列表分隔符,