PHP 6:PHP 基礎資料型別 (Elementary Data Type)

來源:互聯網
上載者:User
本章將介紹PHP基本類型。
相信我們已經熟悉了C/C++,C#或者Java裡的任意一種語言。本章會以C#為比較語言。
OK,如果你想學PHP,你最先考慮的是什麼呢?
我相信肯定是下面的幾個問題:
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

10
36 37 }

逐一討論吧。
PHP有哪幾種資料類型,它們和其他語言有什麼區別呢? PHP支援8種原始的資料類型。
其中包括4種標量類型:
Integer Float String Boolean 同時包括2種複合類型:
Array Object 但是還有2種特殊的類型:
NULL Resource 寫到此,你可能心裡開始犯嘀咕:那麼它們是在程式裡面怎麼表示呢?好的,讓我們先看看前面6種資料類型吧。還有2種類型後面解釋。
Integer:int Float:float String:string Boolean:bool 其實上面的和C# 沒有多大區別,這裡不多說了。
Array資料類型還是比較特殊的,因為在C#語言裡就沒有這種資料類型,其他語言,C/C++,Java也是沒有的。你可以把他當成C#裡的數組看待就可以了。另外,看看PHP官方網站上是怎麼說的。
PHP 中的數組實際上是一個有序圖。圖是一種把 values 映射到 keys 的類型。此類型在很多方面做了最佳化,因此可以把它當成真正的數組來使用,或列表(向量),散列表(是圖的一種實現),字典,集合,棧,隊列以及更多可能性。因為可以用另一個 PHP 數組作為值,也可以很容易地類比樹。
看看Array的用法吧。我們可以建立一個Array對象,由於Array是key和value映射的。所以Array支援一定數量以分號分隔的值對。給個例子,代碼如下:

$arr = array ( " Hello " => " Word " , 12 => true );

echo $arr [ " Hello " ]; // bar
echo $arr [ 12 ]; // 1
?>

請記住一點 :key 可以是整型或者字串。如果鍵名是一個整型的標準表達方法,取整,如果是float型,轉化為整型。與之對比,值則可以為任何值。
如果你想實現多維陣列怎麼辦?在PHP沒有提供類系與C#的多維陣列的寫法,為什麼呢?我的觀點是這裡的數組早已經不是C# 等語言裡的單純的數組了。它已經擴充了數組,可以雜湊表,字典等等。所以提供多維陣列確實沒有必要。雖說如此,但是可以實作類別似的功能,如下代碼:

$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
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 ?>

怎麼樣,基本上瞭解了Array了吧。
至於 Object嘛,感覺和C#裡的沒什麼區別。

NULL 對象就有意思了,這個在C# 裡是沒有的,C#倒是有個null。

特殊的 NULL 值表示一個變數沒有值,NULL 類型唯一可能的值就是 NULL。注意了 NULL 類型是 PHP 4 引進的。

在下列情況下一個變數被認為是 NULL:

被賦值為 NULL。

尚未被賦值。

被unset()。

簡單吧,原來把C#裡的null作為對象了。聰明的傢伙們。
既然如此,我們如何判斷某個變數為 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屬於哪一種呢?

PHP是弱類型的。在PHP裡,變數的類型是賦給它們的值決定的。如果賦的值是整型,那麼變數就是整型,如果是字串,就是字串型。看如下代碼:

$name = " your name " ; // name位string類型。
$total = 12 ; // total為整型
?>

那麼如何轉型呢,我覺得和C# 差不多的。就不贅述了。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.