![]() |
PHP 是什麼呢,簡單的說 PHP 是 Unix 系統上的 ASP,這樣一說相信大家應都知道 PHP 大概是什麼了吧。和 ASP 相比,PHP 似乎不太有人去注意,但其實國外使用 PHP 來建構網站己有很長的一段時間了,而國內現在也慢慢的對 PHP 有所重視了。 |
![]() |
函數是用來封裝敘述區塊的程式單元,被封裝在函數裡的敘述區塊,並不屬於其它任何的敘述,這些敘述只要被定義一次,我們就能從其它的地方來呼叫、使用它們。因此我們會把經常重複撰寫的敘述區塊編寫成一個函數,以節省開發的時間。函數能讓你所寫的程式具有模組化及結構化的架構,原本必須重複編寫的程,式現在只要寫一次,我們隨時都可以使用。 有些函數是 PHP 本身所寫好的我們稱為『內建函數』,例如:Date、intval 等等,而另一種可由我們自己所建立的函數則為『自定函數』,本章園丁所要介紹的就是自定函數。
在 PHP 中的函數定義是使用 function 關鍵字,語法為:
函數命名規則 自定函數的名稱有以下四個限制:
只要是符合 PHP 的語法都可以寫在函數中的敘述語法內,包括其他的 function 或 class。在 PHP3 中函數必須在第一次被使用時就要宣告,否則會出現錯誤,但 PHP4 中無此限制。
在呼叫參數時可利用傳遞參數的方法將某些資料傳給參數來使用,而在函數結束時可利用 return 的方式傳回一個值給父程式。傳遞參數的方法有兩種,分別是 call by value 與 call by reference 兩種。 call by value call by value 的傳值方法是將傳入的參數存放在另一個記憶位置,因此當傳入一個參數時,在函數中對所傳入的參數所做的改變是不會對父程式的變數造成影響的,如以下的範例:
call by reference call by reference 的傳值方法是將傳入的變數指標傳給函數,也就是說,所傳遞的參數其記憶位置與父程式的變數是相同的,因此當函數中對此參數所做的改變等於是改變了父程式的變數。 在 PHP 中要使用 call by reference 的傳值方法有兩種做法: 方法一:在呼叫函數時在變數前加上 & 如:
方法二:在函數的參數上加 & 如:
第一種方法是在呼叫時才決定是否要使用 call by reference 的方式來傳遞參數,而第二種方法則是不論呼叫時是使用 call by value 或 call by reference 都強迫使用 call by reference 的傳遞方法。以下是兩種呼叫的範例:
使用 call by reference 的參數傳遞方式,其所傳遞的參數必須要以變數來傳遞,不要使用常數或直接指定的值,因為常數或直接指定的值是不能改變的。
參數的預設值就是,當我們沒有傳值變函數中的參數時,則該參數就會使用此預設值。如:
上面的範例中,我們只傳遞了一個參數,因此函數只接收了 5 給 $x 而 $y 則使用預設值也就是 10 ,所以傳回的結果為 15 。 使用預設值時要注意一點,就是預設值的參數必須全部靠右。如以下就是錯誤的例子:
這是因為 PHP 的函數是由左而右依序放入參數值的原故,錯誤的寫法會使得 PHP 認為參數傳遞不足。
函數可利用 return 來傳回一個值,而傳回值的型態可為任何型別,包括物件(Object)也可以當成傳回值。
由於 return 只能傳回一個結果,那當有多個傳回值時該如何呢?此時我們可利用陣列來達成,如:
上面的範例就是利用陣列來傳回多個值,利用陣列的傳回值我們就必須利用 list() 函數將所傳回的值再一一的指定給其它的變數。 |