本章將介紹PHP基本類型。
相信我們已經熟悉了C/C++,C#或者Java里的任意一種語言。本章會以C#為比較語言。
OK,如果你想學PHP,你最先考慮的是什么呢?
我相信肯定是下面的幾個問題:
- PHP有哪幾種數據類型,它們和其他語言有什么區別呢?
- 一種語言對于數據類型,有強類型和弱類型之分,PHP屬于哪一種呢?
- PHP有什么獨特的地方呢?
還是先把上一篇文章所引用的代碼拿出來吧。

?1 ? function ?display_user_urls( $url_array )
?2 ? {
?3 ? ?? // ?display?the?table?of?URLs
?4 ?
?5 ? ??//?set?global?variable,?so?we?can?test?later?if?this?is?on?the?page
?6 ? ?? global ? $bm_table ;
?7 ? ?? $bm_table ? = ? true ;
?8 ? ?>
?9 ? ?? < br? />
10 ? ?? < form?name = ' bm_table ' ?action = ' delete_bms.php ' ?method = ' post ' >
11 ? ?? < table?width = 300 ?cellpadding = 2 ?cellspacing = 0 >
12 ? ?? <? php
13 ? ?? $color ? = ? " #cccccc " ;
14 ? ?? echo ? " <tr?bgcolor='$color'><td><strong>Bookmark</strong></td> " ;
15 ? ?? echo ? " <td><strong>Delete?</strong></td></tr> " ;
16 ? ?? if ?( is_array ( $url_array )? && ? count ( $url_array ) > 0 )
17 ? ??{
18 ? ???? foreach ?( $url_array ? as ? $url )
19 ? ????{
20 ? ?????? if ?( $color ? == ? " #cccccc " )
21 ? ???????? $color ? = ? " #ffffff " ;
22 ? ?????? else
23 ? ???????? $color ? = ? " #cccccc " ;
24 ? ?????? // ?remember?to?call?htmlspecialchars()?when?we?are?displaying?user?data
25 ? ?????? echo ? " <tr?bgcolor='$color'><td><a?href=\ " $url \ " > " . htmlspecialchars ( $url ) . " </a></td> " ;
26 ? ?????? echo ? " <td><input?type='checkbox'?name=\ " del_me[]\ "
27 ? ?????????????value=\ " $url \ " ></td> " ;
28 ? ?????? echo ? " </tr> " ;?
29 ? ????}
30 ? ??}
31 ? ?? else
32 ? ???? echo ? " <tr><td>No?bookmarks?on?record</td></tr> " ;
33 ? ?>
34 ? ?? </ table > ?
35 ? ?? </ form >
36 ? <? php
37 ? }
- PHP有哪幾種數據類型,它們和其他語言有什么區別呢?
其中包括4種標量類型:
同時包括2種復合類型:
- Integer
- Float
- String
- Boolean
但是還有2種特殊的類型:
- Array
- Object
寫到此,你可能心里開始犯嘀咕:那么它們是在程序里面怎么表示呢?好的,讓我們先看看前面6種數據類型吧。還有2種類型后面解釋。
- NULL
- Resource
其實上面的和C# 沒有多大區別,這里不多說了。
- Integer: int
- Float: float
- String: string
- Boolean: bool
Array 數據類型還是比較特殊的,因為在C#語言里就沒有這種數據類型,其他語言,C/C++,Java也是沒有的。你可以把他當成C#里的數組看待就可以了。另外,看看PHP官方網站上是怎么說的。
?? PHP 中的數組實際上是一個有序圖。圖是一種把 values 映射到 keys 的類型。此類型在很多方面做了優化,因此可以把它當成真正的數組來使用,或列表(矢量),散列表(是圖的一種實現),字典,集合,棧,隊列以及更多可能性。因為可以用另一個 PHP 數組作為值,也可以很容易地模擬樹。
看看Array的用法吧。我們可以新建一個Array對象,由于Array是key和value映射的。所以Array支持一定數量以分號分隔的值對。給個例子,代碼如下:
<? php請記住一點 : key 可以是整型或者字符串。如果鍵名是一個整型的標準表達方法,取整,如果是float型,轉化為整型。與之對比,值則可以為任何值。
$arr ? = ? array ( " Hello " ? => ? " Word " , ? 12 ? => ? true );
echo ? $arr [ " Hello " ];? // ?bar
echo ? $arr [ 12 ];???? // ?1
?> ?
如果你想實現多維數組怎么辦?在PHP沒有提供類系與C#的多維數組的寫法,為什么呢?我的觀點是這里的數組早已經不是C# 等語言里的單純的數組了。它已經擴展了數組,可以哈希表,字典等等。所以提供多維數組確實沒有必要。雖說如此,但是可以實現類似的功能,如下代碼:
<? php既然討論到這里,你可能想想知道如何新建或刪除一個數組對象。什么都不說了,看看下面代碼:
$arr ? = ? array ( " somearray " ? => ? array ( 6 ? => ? 5 , ? 13 ? => ? 9 , ? " a " ? => ? 42 ));
echo ? $arr [ " somearray " ][ 6 ];???? // ?5
echo ? $arr [ " somearray " ][ 13 ];?? // ?9
echo ? $arr [ " somearray " ][ " a " ];?? // ?42
?> ?
?1 ? ? php怎么樣,基本上了解了Array了吧。
?2 ? $arr ? = ? array ( 5 ? => ? 1 , ? 12 ? => ? 2 );
?3 ? $arr []? = ? 56 ;???? // ?相當于?$arr[13]?=?56;
?4 ? ????????????????//因為第二個元素的鍵是12???????
?5 ? $arr [ " x " ]? = ? 42 ;? // ?創建一個新元素,且鍵為字符串
?6 ? ????????????????//"x",值位42.
?7 ? unset ( $arr [ 5 ]);? // 刪除鍵位5的元素。
?8 ? unset ( $arr );???? // ?刪除整個數組
?9 ? ????????????????//unset()是一函數,從字面的意思上??????????????????????
?????????????????? //看也知道是撤銷設置
10 ? ?>
至于 Object 嘛,感覺和C#里的沒什么區別。
NULL 對象就有意思了,這個在C# 里是沒有的,C#倒是有個null。
特殊的 NULL 值表示一個變量沒有值, NULL 類型唯一可能的值就是 NULL 。 注意了 NULL 類型是 PHP 4 引進的。
在下列情況下一個變量被認為是 NULL :
簡單吧,原來把C#里的null作為對象了。聰明的家伙們。
被賦值為 NULL 。
尚未被賦值。
被unset()。
既然如此,我們如何判斷某個變量為 NULL ,相當的簡單,調用is_null(),如何將某個變量設為 NULL ,一種方法是調用unset().
看看 Resource 吧,稱為資源。它保存了到外部資源的一個引用。資源是通過專門的函數來建立和使用的。 由于資源類型變量保存為打開文件、數據庫連接、圖形畫布區域等的特殊句柄,因此無法將其它類型的值轉換為資源。 由于 PHP4 Zend 引擎引進了資源計數系統,可以自動檢測到一個資源不再被引用了(和 Java 一樣)。這種情況下此資源使用的所有外部資源都會被垃圾回收系統釋放。由于此原因,很少需要用某些 free-result 函數來手工釋放內存。垃圾回收?
除了這些還有其他的嗎?當然是肯定的。還有一些偽類型:
???????? mixed
?????????? mixed 說明一個參數可以接受多種不同的(但并不必須是所有的)類型。?????????? 例如 gettype 可以接受所有的 PHP 類型, str_replace 可以接受字符串和數組。
?????? ? number
??????????? number 說明一個參數可以是 int或float.
??????? callback
????????? 有些諸如 call_user_function() 或 usort() 的函數接受用戶自定義的函數作為一個參數。Callback 函數不僅可以是一個簡單的函數,它還可以是一個對象的方法,包括靜態類的方法。
2 .一種語言對于數據類型,有強類型和弱類型之分,PHP屬于哪一種呢?
? $name = " your?name " ; // name位string類型。
? $total = 12 ;???????? // total為整型
?>
???????
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
