| |初探|語法|變數與常數|外部變數|環境變數|運算元|流程控制|引用檔案|函數|物件| | |
|---|---|
| PHP 簡介 |
|
|
資料型態 | |
| PHP 支援 integer, double, string, array, object 等五種資料型態。 | |
Integer | |
| integer 為整數型別。在 32 位元的作業系統中,它的有效範圍為 -2,147,483,648 ∼ 2,147,483,647。要使用十六進位整數可以在面加 0x;要使用八進位整數可以在面加 0。 | |
| 例: | |
|
<? $a = 1234; // 十進位 $a = -1234; // 負數 $a = 0123; // 八進位 $a = 0x12; // 十六進位 ?> | |
Double | |
| double 為浮點數型別。在 32 位元的作業系統中,它的有效範圍為 1.7E-308 ∼ 1.7E+308。 | |
| 例: | |
|
<? $a = 1.234; $a = 1.2e3; ?> | |
String | |
| string 為字串型別。在 PHP 中有三種指定字串的方法:雙引號(")、單引號('),以及所謂 heredoc 語法(<<<)。 | |
| 1. 雙引號 | |
|
包含在雙引號裡頭的可以是一般文字字串,可以含有單引號;如果含有變數的話,會以該變數的值代入。與 C、Perl 一樣,PHP 也允許以「\」代表跳脫(escape)字元,在雙引號中加入具有特殊用途的符號,如: \n:換行(newline) \r:送出 CR(carriage) \t:跳位(Tab) \\:反斜線(backslash) \$:錢字號(dollar sign) \":雙引號(double-quote) \[0-7]{1,3}:八進位表示法的 regular expression \x[0-9A-Fa-f]{1,2}:十六進位表示法的 regular expression | |
| 例: | |
|
<? $str_1 = "I am here!"; $str_2 = "str_1 : $str_1"; echo $str_2; ?> | |
| 輸出的結果將是:str_1 : I am here!,原先被包含在雙引號中的變數($str_1)以其值代入了。 | |
| 2. 單引號 | |
| 使用單引號要注意的是,在單引號中的變數不會以變數值代入。另外,可以被 escape 的字元只有兩個:\' 與 \\。 | |
| 例: | |
|
<? $str_1 = 'I am here!'; $str_2 = 'str_1 : $str_1'; echo $str_2; ?> | |
| 輸出的結果將是:str_1 : $str_1,原先被包含在單引號中的變數($str_1)不會被其值所取代。 | |
| 3. heredoc synex | |
| 這種設定字串的方法只在 PHP4 提供,主要用於引用一整段文字,如: | |
|
<? $a = "abc"; $str = <<< CHENSH 中文"測試"有雙引號<br> 中文'測試' $a 有單引號與變數 CHENSH; echo $str; ?> | |
|
輸出的 HTML 碼: 中文"測試"有雙引號<br> 中文'測試' abc 有單引號與變數 | |
| 上述的 CHENSH 是用來標示文字段落起迄位置的 identifier,可自行命名。另外,結束的 identifier 一定要放在該行的行首,否則將導致錯誤。 | |
Array | |
| array 為陣列型別。可以是二維、三維或者多維陣列,其中的元素也很自由,可以是 string、integer 或者 double,甚至是 array。陣列由第 0 個元素開始配置。 | |
| 例: | |
|
<? $a[0] = 1234; $b[0][] = 567.8; $c = array(9, 10, 'A'); ?> | |
Object | |
| object 為物件型別。物件的使用上就比較麻煩了,要先宣告類別,甚至必須先要有方法,方可使用物件。 | |
| 例: | |
|
<? class foo { function do_foo () { echo "Doing foo."; } } $bar = new foo; $bar -> do_foo (); ?> | |
|
執行結果: Doing foo. | |
型態轉換 | |
| 您可以強迫將變數的型態轉換,例如: | |
|
<? $a = 10; // $a is an integer $b = (double)$a; // $b is an double ?> | |
當字串被轉換成值數值資料時,原則上是:
| |
| 例: | |
|
<? $foo = 1 + "10.5"; // $foo is float (11.5) $foo = 1 + "-1.3e3"; // $foo is float (-1299) $foo = 1 + "bob-1.3e3"; // $foo is integer (1) $foo = 1 + "bob3"; // $foo is integer (1) $foo = 1 + "10 Small Pigs"; // $foo is integer (11) $foo = 1 + "10 Little Piggies"; // $foo is integer (11) $foo = "10.0 pigs " + 1; // $foo is integer (11) $foo = "10.0 pigs " + 1.0; // $foo is float (11) ?> | |
題外話:
我曾經在某支需要針對文字內容進行比對的程式裡犯錯,然後花了好一番功夫才發現問題的癥結所在。 那支程式中會出現多個字串變數(如:1A10, 43F2 等等),長度都是 4 個字元,我將它們拿來與「1000」這個字串進行比對,其值大於後者的話,就執行某項動作;否則,就執行另一項動作。那段程式就像這樣: if ( $X > "1000" ) ...... 在多數的情況下,它都能如我所願地進行;直到有一次,$X 的值為「1E00」時,才讓我警覺上述的語法是有瑕疵的,因為「1E00」可能會被視為浮點數型別的變數。 所以這段判別式得改一改,要利用 strcmp( ) 函數來進行逐字元比對才行: if ( strcmp($X, "1000") > 0 ) ...... | |
|
| |
| |初探|語法|變數與常數|外部變數|環境變數|運算元|流程控制|引用檔案|函數|物件| | |


Integer
題外話: