Jollen's PHP 專欄「2.02 資料型態與變數」裡的所有文章!

  

5. 如何指定變數與 PHP 的資料型態有哪些?

jollen 發表於 October 27, 2006 1:01 PM

PHP 所支援的資料型態 (data types) 有 8 種: 1. boolean 2. integer 3. floating (double) 4. string 5. array 6. object 7. resource 8. NULL 第 1~4 種型別稱為 scalar types (),第 5~6 種稱為 compound types (複合型別),最後第 7 與第 8 種則是特殊型別。 PHP...

6. 如何做 PHP 的型別轉換?

jollen 發表於 October 27, 2006 1:06 PM

PHP 裡要做強迫轉換變數型態的方法有 2 種: 1. 使用 C 語言的 type casting 語法,例如: $x = 5; $y = (double) $x; //括弧裡可以有 tab 或空白 (space) 可使用的 cast 型別有: 1. (int),(integer) - 轉換成 integer 型別 2. (bool),(boolean) - 轉換成 boolean 型別 3. (float),(double),(real) -...

7. 如何將字串型態轉成數值型態?

jollen 發表於 October 27, 2006 1:10 PM

當我們給變數的值是利用雙引號括住數值或字串時,就是指定一個字串給變數,例如: $a = "Hello!"; $a 變數的值就是字串。請看底下的範例: <?php $a = "hello!"; echo $a; ?> 輸出結果為: hello! PHP 有一項特性,就是 PHP 的變數是在執行時才決定型態的,因此字串也可以用來做計算。PHP 將字串拿來做運算時,會依據底下 2 個原則設法將字串轉成可以計算的型態: 1. 字串中包括 "."、"e" 或 "E" 時轉換成 double 型別,否則轉換為 integer 2. 無法轉換時則為 0 之前曾見過這樣的寫法: $foo = 5 + "10...

8. 如何初始化變數?

jollen 發表於 October 27, 2006 1:14 PM

PHP 的變數都是以 $ 做為開頭,初始化時直接指定初值即可: <?php $name = "Jollen" $mail = "jollen@o3.net" $age = 19 ?>...

9. 如何初始化陣列(array)?

jollen 發表於 October 27, 2006 1:15 PM

初始化變數時直接指定陣列與元素即可: <?php $names[0] = "Jollen" $names[1] = "Jordan" $names[2] = "Kitty" ??> PHP 還有另外一個自動設定元素的特異功能: <?php $names[] = "Jollen" $names[] = "Jordan" $names[] = "Kitty" ?> 這個特異功能等於上面的初始化方法,陣列自動由第 0 個元素開始做配置。要注意的是,PHP 和 Perl/C 一樣,陣列的元素都是由 0開始。其中 [] (中括弧) 不能省略,省略的話 PHP 會以為這個變數是一個 string。...

10. 什麼是 Type Juggling( 型態間的戰爭)?

jollen 發表於 October 27, 2006 1:17 PM

因為 PHP 並沒有精確的精型機制,而是當我們指定什麼樣型別的值給變數,該變數就是什麼樣的型別,例如: <?php $a = 5; //$a 為 integer $a = "5"; //$a 為 string ?> 變數在做運算時,例如使用 "+",當 expression 包含各種不同的型態時,就會有 Type Juggling 的動作發生,例如: <?php $foo = "0"; // $foo 為 string "0" (ASCII 48) $foo++; // $foo 為 string...

11. 在 PHP 裡如何生成物件?

jollen 發表於 October 27, 2006 1:24 PM

在 PHP 裡要生成物件和 C++ 一樣,首先必須先定義好 class,然後再利用關鍵字 new 來建立物件: <?php class person { function who() { echo "I'm Jollen."; } } $man = new person; $man->who(); // 輸出 I'm Jollen. ?>...

12. 什麼是區域變數?

jollen 發表於 October 27, 2006 1:26 PM

在 function 裡初始化的變數即區域變數。為什麼叫區域變數呢?因為區域變數只有在 function 裡可以被「看見」,請看底下的範例: <?php function sum() { $a = 1; $b = 2; echo $a+$b; } sum(); ?> 執行結果: 3 第 2 個輸出的結果為 0,這是因為 function 裡的 $a 只有在 function 裡才能被看到,在 function 外區域變數就不能被看見。...

13. 什麼是全域變數?

jollen 發表於 October 27, 2006 1:28 PM

在區域變數範圍之外所宣告的變數即全域變數,例如: <?php $a = 1; function sum() { echo $a; } sum(); ?> 這段程式碼執行後不會有任何輸出,因為 $a 變數是屬於區域變數。請注意 PHP 鬆散資料型別的變數使用前是不需要經過任何宣告的,包括 printf()、給定初值等。 因為區域變數的可見度會蓋掉全域變數,所以 sum() 所 echo 出的 $a 變數是一個區域變數,那該如何告訴 function 變數是一個全域變數呢?利用 global 關鍵字即可: <?php $a = 1; function sum() { global $a; $a...

14. 什麼是靜態變數?

jollen 發表於 October 27, 2006 1:29 PM

有些程式語言 (例如 C) 具有一種稱做靜態變數 (static variables) 的型別,PHP 也支援靜態變數的寫法。 在 PHP 裡,只有區域變數才能、也才需要宣告成靜態變數,正常的區域變數生命期是在函數執行期間,隨函數的執行結束而結束,而靜態變數的生命期是隨整個 PHP 程式結束而結束,但可見度只有該函數。 我們可以利用關鍵字 static 來宣告靜態變數: <?php function sum() { static $a = 1; if ($a sum(); ?> 輸出結果: 123456789 區域或全域變數都不是靜態變數,因為函數執行結束後,變數的值並不會被保留。而所謂的靜態變數意思就是說,當函數執行結束後,該變數的值仍然會被保留,因此第 2 次呼叫該函數時,靜態變數之前的值仍然存在。...

15. 何謂「以變數為名的變數何謂」?

jollen 發表於 October 27, 2006 2:01 PM

所謂「以變數為名的變數」 (variable variables) 指的其實就是「動態變數名稱」 (dynamic variable names),直接來看一個例子讀者就可以了解什麼是 variable variables 了: <?php $a = "Jollen"; $$a = "Pig!!!"; echo "$Jollen"; // 輸出為 Pig!!! echo "${$a}"; // 輸出為 Pig!!! echo "$a"; // 輸出為 Jollen ?> 說的嚴謹一點,就是利用變數的值來做為其它變數的名稱,像上面這個例子 $$a 指的就是利用 $a 變數的值做為變數的名稱,所以說穿了上面這個宣告就等於是: $a =...

16. 何謂「變數的變數陣列」?

jollen 發表於 October 27, 2006 2:02 PM

變數變數陣列 (variable variables with arrys) 跟 variable variables 其實是相同的東西,但使用變數變數陣列時,有些小地方必須要特別小心。例如底下是一個錯誤的寫法: $$a[0] = "Kitty!"; 這個語法錯誤的地方在於 PHP 不曉得 $a 和 $a[0] 那一個才是變數,也就是: $a = "Good"; $a[0] = "Bad"; $$a[0] = "Kitty!"; 兩者所代表的意思是很模糊的,PHP 分不清楚到底是: $Good[0] = "Kitty!"; 還是: $Bad = "Kitty!"; 才是程式設計師想要的。因此,正確的寫法應該使用一對大括弧來告訴 PHP 我們要的是那一種做法:...

17. 如何讀取讀取表單(form)?全域變數讀取法

jollen 發表於 October 27, 2006 2:10 PM

寫過 CGI 的朋友都知道,利用網頁的 form 可以將 client 端的資料傳送至伺服器端。利用 PHP 讀取 form 的資料是非常容易的,而且不像其它程式語言一樣還要判斷並分析這些資料,由 form 傳送過來的資料對 PHP 來講就是全域變數,例如: <form action="reg.php" method="post"> E-Mail: <input type="text" name="email"><br> <input type="submit"> </form> PHP 會將 form 傳進來的資料,存放至由 HTML 標籤的 name 欄位所指定的變數裡。以上面的 form 為例,假設 form 傳進 $email=jollen@o3.net,在 PHP 裡就等於:...

18. 如何讀取讀取表單(form)?track_vars 讀取法

jollen 發表於 October 27, 2006 2:13 PM

PHP 的 track_vars 功能,經由 POST 到 Server 的表單資料會存放在 $HTTP_POST_VARS 陣列裡,經由 GET 的資料會存放在 $HTTP_GET_VARS 陣列裡。 使用 track_vars 前必須將此功能打開,方法有 2 種: □ 將 php.ini 的 track_vars 參數打開: track_vars = On □ 在網頁裡加上 <? php_track_vars ?> PHP 4.0.3 與以後的版本不再提供 track_vars 的設定項目 (php.ini),以後 PHP...

19. 如何讀取讀取表單(form)?$_POST 與 $_GET 讀取法

jollen 發表於 October 27, 2006 2:16 PM

Jollen 推薦您使用這種方式來讀取表單資料。 PHP 4.1.0 開始提供經由 $_POST 與 $_GET 陣列存取表單資料的做法,而前面所介紹的 $HTTP_*_VARS 讀取方式是以往的寫法,但仍然可以使用。 例如名稱為 username 的表單資料,經由 POST 方式傳遞時,存取該表單資料時應寫成: $_POST["username"]; // 等於 $HTTP_POST_VARS["username"]; 改用 GET 方式傳遞時,則要改成: $_GET["username"]; // 等於 $HTTP_GET_VARS["username"]; PHP 4.2.0 與之後的版本讀取系統的環境變數時,預設將不會自動將環境變數註冊為全域變數,因此請由 $HTTP_ POST (GET)_VARS 或 $_ POST(GET) 陣列來讀取或是設定 php.ini 的 register_globals...

20. 如何讀取圖形的超鏈結?

jollen 發表於 October 27, 2006 2:18 PM

在圖形上設定鏈結時,瀏灠器會把滑鼠點選的座標位置傳給伺服器,並由 PHP 做轉換,存放至 var_x 與 var_y 兩個全域變數裡。例如底下的 HTML 語法: <input type="image" src="image.gif" name="sub"> 此時 (x, y) 的點選座標將會被存放到 (sub_x, sub_y) 裡。...

21. 什麼是 HTTP Cookies?

jollen 發表於 October 27, 2006 2:19 PM

Cookies 是一種可在瀏覽器存放資料的機制,利用 setcookie() 函數設定 Cookies,因為 Cookies 屬於 HTML 的檔頭,所以 setcookie() 必須在有任何輸出之前呼叫。 Cookies 的內容會在網頁第一次被瀏覽時,由瀏覽器存放於 client 端中的一個檔案,當瀏覽器再次request 該網頁時,再將 Cookies 傳回給伺服器。 PHP 4.1.0 與之後的版本改由 $_COOKIE 陣列讀取系統環境變數,但 $HTTP_COOKIE_VARS 的做法仍然可以使用。 PHP 4.2.0 與之後的版本讀取系統的環境變數時,預設將不會自動將環境變數註冊為全域變數,因此請由 $HTTP_COOKIE_VARS 或 $_COOKIE 陣列來讀取或是設定 php.ini 的 register_globals 項目 (On)。 PHP 5...

22.如何 讀取系統的環境變數?

jollen 發表於 October 27, 2006 2:20 PM

PHP 可以將系統的環境變數自動存成 PHP 的變數,例如: echo $HOME 表示顯示系統中的 HOME 環境變數。有時 PHP 的變數會和系統中的環境變數重覆,為了確保我們讀取的是正確的系統環境變數,可以利用 getenv 來讀取環境變數,利用 putenv 存放環境變數。 在 UNIX 系統底下可利用 env 命令來查詢系統的環境變數: linux# env BASH=/bin/bash BASH_VERSION=1.14.7(1) BROWSER=/usr/bin/netscape COLUMNS=80 DISPLAY=localhost:0.0 ENV=/root/.bashrc EUID=0 HISTFILE=/root/.bash_history HISTFILESIZE=1000 HISTSIZE=1000 HOME=/root HOSTNAME=localhost.localdomain HOSTTYPE=i386 . . . linux# echo...

23. 如何定義常數(constant)?

jollen 發表於 October 27, 2006 2:21 PM

PHP 有 2 個特別的常數:__FILE__ 與 __LINE__,分別代表目前正在被直譯執行的檔案名稱與執行的行數,例如: <?php function report_error($file, $line, $message) { echo "An error occured in $file on line $line: $message."; } report_error(__FILE__, __LINE__, "Something went wrong!"); ?> 使用者自定常數可使用 define() 函數,這些常數定義後,就不能再被重新定義。例如我們要定義 PI 常數的值為 3.14159: <?php define("PI", 3.14159); echo PI;...

| Top | Jollen's Forum |
Jollen's PHP 專欄採用 Attribution-NonCommercial-NoDerivs 2.5 授權條款
Copyright(c) 2001-2007 www.jollen.org