- PHP+MySQL動態網站開發從入門到精通(視頻教學版)
- 張工廠
- 2242字
- 2021-01-08 17:30:20
3.5 數據的類型
從PHP 4開始,PHP中的變量不需要事先聲明,賦值即可聲明。在使用這些數據類型前,讀者需要了解它們的含義和特性。下面介紹整型、浮點型、布爾型、字符串型、數組型、對象型和兩個較特殊的類型。
3.5.1 什么是類型
不同的數據類型其實就是所存儲數據的不同種類。PHP的不同數據類型主要包括:
● 整型(integer),用來存儲整數。
● 浮點型(float),用來存儲實數。
● 字符串型(string),用來存儲字符串。
● 布爾型(boolean),用來存儲真(true)或假(false)。
● 數組型(array),用來存儲一組數據。
● 對象型(object),用來存儲一個類的實例。
作為弱類型語言,PHP也被稱為動態類型語言。在強類型語言,例如C語言中,一個變量能存儲一種類型的數據,并且這個變量在使用前必須聲明變量類型。而在PHP中,給變量賦什類型的值,這個變量就是什么類型,例如以下幾個變量:
$hello = "hello world";
由于hello world是字符串,則變量$hello的數據類型就是字符串類型。
$hello = 100;
同樣,由于100為整型,$hello也就是整型。
$wholeprice = 100.0;
由于100.0為浮點型,則$wholeprice就是浮點型。
由此可見,對于變量而言,如果沒有定義變量的類型,則它的類型由所賦值的類型決定。
3.5.2 整型(integer)
整型(integer)是數據類型中最為基本的類型。在現有的32位運算器的情況下,整型的取值是從-2147483648到+2147483647。整型可以表示為十進制、十六進制和八進制。
例如:
3560 //十進制整數 01223 //八進制整數 0x1223 //十六進制整數
3.5.3 浮點型(float或double)
浮點型(floating-point)就是表示實數。在大多數運行平臺下,這個數據類型的大小為8個字節。它的近似取值范圍是2.2E-308~1.8E+308(科學計數法)。
例如:
-1.432 1E+07 0.0
3.5.4 布爾型(boolean)
布爾型(boolean)只有兩個值,就是true和false。布爾型是十分有用的數據類型,通過它,程序實現了邏輯判斷的功能。
其他的數據類型基本都有布爾屬性:
● 整型,為0時,其布爾屬性為false,為非零值時,其布爾屬性為true。
● 浮點型,為0.0時,其布爾屬性為false,為非零值時,其布爾屬性為true。
● 字符串型,為空字符串“”,或者零字符串“0”時,其布爾屬性為false,包含除此以外的字符串時其布爾屬性為true。
● 數組型,若不含任何元素,其布爾屬性為false,只要包含元素,則其布爾屬性為true。
● 對象型,資源型,其布爾屬性永遠為true。
● 空型,其布爾屬性永遠為false。
3.5.5 字符串型(string)
字符串型的數據是表示在引號之間的。引號分為雙引號(" ")和單引號(' ')。這兩種引號可以表示字符串。但是這兩種表示方法也有一定區別。
雙引號幾乎可以包含所有的字符,但是在其中的變量顯示變量的值,而不是變量的變量名,而有些特殊字符加上“\”符號就可以了;單引號內的字符是被直接表示出來的。
下面通過一個案例,來講述整型、浮點型、布爾型和字符串型數據的使用方法和技巧。
【例3.10】(實例文件:ch03\3.10.php)
<? php $int1= 2012; // 十進制整數 $int2= 01223; //八進制整數 $int3=0x1223; //十六進制整數 echo "輸出整數類型的值:"; echo $int1; echo "\t"; //輸出一個制表符 echo $int2; //輸出659 echo "\t"; echo $int3; //輸出4643 echo "<br />"; $float1=54.66; echo $float1; //輸出54.66 echo "<br />"; echo "輸出布爾型變量:"; echo (Boolean)( $int1); //將int1整型轉化為布爾變量 echo "<br />"; $string1="字符串類型的變量"; echo $string1; ?>
本程序運行結果如圖3-10所示。

圖3-10 程序運行結果
3.5.6 數組型(array)
數組是PHP變量的集合,它是按照“鍵值”與“值”的對應關系組織數據的。數組的鍵值可以是整數,也可以是字符串。另外,數組不特意表明鍵值的默認情況下,數組元素的鍵值為從零開始的整數。
在PHP中,使用list()函數或array()函數來創建數組,也可以直接進行賦值。
下面使用array()函數創建數組。
【例3.11】(實例文件:ch03\3.11.php)
<? php $arr=array // 定義數組并賦值 ( 0=>15, 2=>1E+05, 1=>"開始學習PHP基本語法了", ); for ($i=0; $i<count($arr); $i++) // 使用for循環輸出數組內容 { $arr1=each($arr); echo "$arr1[value]<br />"; } ?>
本程序運行結果如圖3-11所示。

圖3-11 程序運行結果
【案例分析】:
(1)程序中用“=>”為數組賦值,數組的下標只是存儲的標識,沒有任何意義,數組元素的排列以加入的先后順序為準。
(2)本程序采用for循環語句輸出整個數組,其中count函數返回數組的個數,echo函數返回當前數組指針的索引值對,后面的章節將詳細講述echo函數的使用方法。
上面實例的語句可以簡化如下。
【例3.12】(實例文件:ch03\3.12.php)
<? php $arr=array(15,1E+05, "開始學習PHP基本語法了"); // 定義數組并賦值 for($i=0; $i<3; $i++) { echo$arr[$i]<br/>"; } ?>
本程序運行結果如圖3-12所示。從結果可以看出,這兩種寫法的運行結果相同。另外,讀者還可以對數組的元素一個一個地賦值,下面舉例說明。上面的語句可以簡化如下。

圖3-12 程序運行結果
【例3.13】(實例文件:ch03\3.13.php)
<? php $arr[0]=15; // 對數組元素分別賦值 $arr[2]= 1E+05; $arr[1]= "開始學習PHP基本語法了"; for ($i=0; $i<count($arr); $i++) { $arr1=each($arr); echo "$arr1[value]<br />"; } ?>
本程序運行結果如圖3-13所示。從結果可以看出,一個一個賦值的方法和上面兩種寫法的運行結果一樣。

圖3-13 程序運行結果
3.5.7 對象型(object)
對象就是類的實例。當一個類被實例化以后,這個被生成的對象被傳遞給一個變量,這個變量就是對象型變量。對象型變量也屬于資源型變量。
3.5.8 NULL型
NULL類型是僅擁有NULL這個值的類型。這個類型用來標記一個變量為空。一個空字符串與NULL是不同的。在數據庫存儲時會把空字符串和NULL區分開處理。NULL型在布爾判斷時永遠為false。很多情況下,在聲明一個變量的時候可以直接先賦值為NULL型,如$value = NULL。
3.5.9 資源類型(resource)
Resource類型,也就是資源類型,是十分特殊的數據類型。它表示PHP的擴展資源,可以是一個打開的文件,也可以是一個數據庫連接,甚至可以是其他的數據類型。但是在編程過程中,資源類型卻是幾乎永遠接觸不到的。
3.5.10 數據類型之間的相互轉換
數據從一種類型轉換到另外一種類型,就是數據類型轉換。在PHP語言中,有兩種常見的轉換方式:自動數據類型轉換和強制數據類型轉換。
1.自動數據類型轉換
這種轉換方法最為常用,直接輸入數據的轉換類型即可。例如float型轉換為整數int型,小數點后面的數將被舍棄。如果float數值超過了整數的取值范圍,則結果可能是0或者整數的最小負數。
【例3.14】(實例文件:ch03\3.14.php)
<? php $flo1=1.86; // 定義float類型 echo (int)$flo1."<br />"; // 轉換為整數類型輸出 $flo2=4E32; // 超過整數取值范圍 echo(int)$flo2; ?>
本程序運行結果如圖3-14所示。

圖3-14 程序運行結果
2.強制數據類型轉換
在PHP中,可以使用settype函數強制轉換數據類型,基本語法如下。
Bool settype(var, string type)
注意:type的可能值不能包含資源類型數據。
【例3.15】(實例文件:ch03\3.15.php)
<? php $flo1=1.86; // 定義浮點型數據 echo settype($flo1, "int"); 強制轉換數據為整數并輸出 ?>
本程序運行結果如圖3-15所示。

圖3-15 程序運行結果
- Learning Scala Programming
- 少兒人工智能趣味入門:Scratch 3.0動畫與游戲編程
- SQL Server 2012數據庫技術及應用(微課版·第5版)
- Python爬蟲開發:從入門到實戰(微課版)
- 營銷數據科學:用R和Python進行預測分析的建模技術
- Android 7編程入門經典:使用Android Studio 2(第4版)
- Mastering Unity 2D Game Development(Second Edition)
- 深入剖析Java虛擬機:源碼剖析與實例詳解(基礎卷)
- Flowable流程引擎實戰
- Spring技術內幕:深入解析Spring架構與設計原理(第2版)
- Kubernetes進階實戰
- Cocos2d-x by Example:Beginner's Guide(Second Edition)
- Kotlin極簡教程
- 算法設計與分析:基于C++編程語言的描述
- Instant Apache Camel Messaging System