PHP 函數
我們在先前的學習中已經使用過大量的函數:var_dump以及非常多的陣列函數,他們的特點是什麼?
1. 都可以執行一些特定的功能
2. 都有特殊的名稱
3. 都有或多或少的參數
# 4. 大多數函數都會有回傳值,即使沒有也會執行特定的運算
5. 不需要知道函數內部的實作邏輯
函數存在於大多數的程式語言中,它們被用來分隔哪些能夠完成獨立明確任務的程式碼。
函數名稱必須以字母或底線開頭,後面跟著字母、數字或底線,另外函數名稱是大小寫不敏感的
PHP 的真正威力源自於它的函數。
在 PHP 中,提供了超過 1000 個內建的函數。
PHP 內建函數
如需查看所有陣列函數的完整參考手冊和實例,請造訪我們的 PHP 參考手冊。
PHP 函數
我們先前呼叫的都是PHP內建的函數,大多是基礎的功能;但是,現實項目中,是無法滿足我們的需求的。 因此,我們不僅限於PHP內建函數,我們可以編寫自己的函數來完成任何任務。
在本章中,我們將為您解釋如何建立自己的函數。
如要在頁面載入時執行腳本,您可以把它放到函數裡。
函數是透過呼叫函數來執行的。
你可以在頁面的任何位置呼叫函數。
建立 PHP 函數
函數是透過呼叫函數來執行的。
function 函數名稱([參數名稱1[=值1],參數名稱2[=值2], 參數名稱n[=值n]])
{
函數中的功能體(代碼/語句)
[return 回傳值]
}
##說明:
11. 函數的執行沒有順序關係,可以在定義處之前的位置呼叫
12. 函數不能被定義兩次,即函數不能被重載
簡單的實例:
一個簡單的函數,在被呼叫時能輸出我的名稱:
<html> <body> <?php function writeName() { echo "Kai Jim Refsnes"; } echo "My name is "; writeName(); ?> </body> </html>
輸出:
My name is Kai Jim Refsnes
#PHP 函數- 新增參數
為了給函數增加更多的功能,我們可以新增參數。參數類似變數。
參數就在函數名稱後面有一個括號內指定。
實例1
下面的實例會輸出不同的名字,但姓氏是相同的:
<html> <body> <?php function writeName($fname) { echo $fname . "Refsnes.<br>"; } echo "My name is"; writeName("Kai Jim"); echo "My sister's name is"; writeName("Hege"); echo "My brother's name is"; writeName("Stale"); ?> </body> </html>
輸出:
My name is Kai Jim Refsnes.
My sister's name is Hege Refsnes.
My brother's name is Stale Refsnes.
實例2
#下面的函式有兩個參數:
<html> <body> <?php function writeName($fname,$punctuation) { echo $fname . "Refsnes" . $punctuation . "<br>"; } echo "My name is"; writeName("Kai Jim","."); echo "My sister's name is"; writeName("Hege","!"); echo "My brother's name is"; writeName("Ståle","?"); ?> </body> </html>
輸出:
My name is Kai Jim Refsnes.
My sister's name is Hege Refsnes!
My brother's name is Ståle Refsnes?
PHP 函數-傳回值
如需讓函數傳回一個值,請使用return 語句。
實例
<html> <body> <?php function add($x,$y) { $total=$x+$y; return $total; } echo "1 + 16 =" . add(1,16); ?> </body> </html>
輸出:
1 + 16 = 17
函數的預設值
回顧函數的語法,只要稍作修改,給第二個參數後面加上等號,並且賦值,那麼參數2就有了預設值, 函數呼叫時只需要傳遞一個參數1
#function 函數名稱([參數1, 參數2 = 2)
{
函數中的功能體(程式碼/語句)
[return 傳回值]
##}
#作用:
假設有一個系統函數,已經使用了很久,到處都有調用它的地方,如果需要添加新的邏輯,很有可能需要為它添加一個新的參數。 如果新增了新參數,這時函數的定義改變了,我們需要找到每個呼叫的地方去修改並增加這個參數。 如果給個預設值呢?預設值用來控制關閉新的邏輯,這樣原先的程式碼不用做任何修改也不會執行到新的邏輯, 而新的程式碼,可以顯示的指定參數開啟新的邏輯。
實例
<html> <body> <?php function add($x,$y = 10) { $total=$x+$y; return $total; } echo "1 + 10 =" . add(1); ?> </body> </html>
由上面的實例看出,函數後的參數如果有預設值,預設值代表的這個參數可以不用傳值進去。
如:echo "1 + 10 = " . add(1)中只是傳了一個值 1 給 $x。