變數類型變化(juggling) PHP不需要(或說不支援)在聲名變數明確他的變數類型;一個變數的型別是由這個變數被使用的前後關係來決定的,也就是說,如果你給一個變數var賦了一個字串的值,var就變成了字串變數。如果你再將一個整數賦值給var,他又變成了一個整數型變數。 一個PHP自動轉換變數類型的例子是加法的運算元'+'。如果任何一個操作數都是雙精度數,那麼所有的操作數被當作雙精度數求值,結果也是雙精度數。 否則,操作數將被視為整數,結果也會是整數。注意這並不影響每個運算元本身的變數類型,唯一的變化就是運算元在計算的過程中如何處理。 |
|
如果你覺得上面例子中最後兩個表達式看起來有點奇怪的話,請看「字串的轉換」部分。 如果你希望強制一個變數被當作某種固定的類型來計算,請看「類型強制(casting)」 一節。如果你希望轉換一個變數的類型,請看函數「settype()」的說明。 確定一個變數的類型 因為PHP自己決定變數的類型並且一般按照需要轉換他們,一個特定的變數的類型不是在任何時間都非常明顯。 PHP包含一些函數可以找出這個變數的型別。這些函數是gettype(), is_long(), is_double(), is_string(), is_array(), 和is_object(). 類型強制(type casting) 在PHP中類型強制同在C語言中大抵相似:將需要的類型的種類寫在要強制的變數的前面的圓括號中。 |
|
以下的強制方式是允許的: (int), (integer) – 強製成整數 (real), (double), (float) – 強製成雙精度數 (string) – 強製成字串 (array) – 強製成陣列 (object) – 強製成物件 注意在圓括號中允許製表符(tabs)和空格(spaces) ,因此下面的語句是等價的: $foo = (int) $bar; $foo = ( int ) $bar; 字串轉換 當一個字串被當作數字型的值來計算時,他的結果和類型如下面所述的決定。 如果這個字串含有字元'.','e',或'E',則被當作雙精度類型變數來處理,否則當作是整數。 這個字串的值由詞首部分決定。如果這個字串以任何有效的數字的資料開始,那麼這個數字資料就是這個字串參加運算的值。否則,值為零(zero)。有效的數字資料是遵循下面的這些標記的,跟隨在一個或多個數字後面(可以包含小數點),跟隨在一個可選的指數後面。指數是由一個或多個數字跟在'e'或'E'後面構成的。 |
|
獲取更多信息,請參考Unix手冊關於strtod(3)的部分。 |