PHP函數(shù)
PHP?函數(shù)
PHP 的真正威力源自於它的函數(shù)。
什麼是函數(shù)
我們?cè)谙惹暗膶W(xué)習(xí)中已經(jīng)使用過大量的函數(shù):var_dump、sprintf以及非常多的數(shù)組函數(shù),他們的特徵是什麼?
??????? 都可以執(zhí)行一些特定的功能
??????? 有特殊的名稱
???????函數(shù)都會(huì)有回傳值,即使沒有也會(huì)執(zhí)行特定的運(yùn)算
??????? 不需要知道函數(shù)內(nèi)部的實(shí)作邏輯
函數(shù)存在於大多數(shù)的程式語言中,它們被用來分隔哪些能夠完成獨(dú)立明確任務(wù)的程式碼。
函數(shù)名稱必須以字母或底線開頭,後面跟著字母、數(shù)字或底線,另外函數(shù)名稱是大小寫不敏感的
什麼是函數(shù)參數(shù)我們可以把函數(shù)想像成一個(gè)榨汁機(jī),參數(shù)就好比是我們投放進(jìn)去的水果,而函數(shù)中執(zhí)行的程式碼就好比是攪拌機(jī)的攪拌
參數(shù)不同,函數(shù)傳回的結(jié)果也不同,就像投放了橘子後不會(huì)出蘋果汁一個(gè)道理。函數(shù)也可以接受多個(gè)參數(shù),就好比是混合果汁
函數(shù)只留給我們函數(shù)名來調(diào)用,而我們無需了解函數(shù)裡的程式碼是如何定義的,同樣,我們也不需要了解榨汁機(jī)裡的工作原理
PHP 內(nèi)建函數(shù)在PHP 中,提供了超過1000 個(gè)內(nèi)建的函數(shù)。
如需查看所有陣列函數(shù)的完整參考手冊(cè)和實(shí)例,請(qǐng)?jiān)煸L我們的?PHP 參考手冊(cè)。
?
PHP 函數(shù)在本章中,我們將為您講解如何建立自己的函數(shù)。
如要在頁面載入時(shí)執(zhí)行腳本,您可以把它放到函數(shù)裡。
函數(shù)是透過呼叫函數(shù)來執(zhí)行的。
你可以在頁面的任何位置呼叫函數(shù)。
建立 PHP 函數(shù)函數(shù)是透過呼叫函數(shù)來執(zhí)行的。
語法
function 函數(shù)名稱(參數(shù)1, 參數(shù)2, 參數(shù)3 …) {
??? 程式碼/語句;
#??? return 回傳值;
}
PHP的函數(shù)不一定要明確保留return語句,如果沒有return,函數(shù)會(huì)自動(dòng)回傳null
PHP 函數(shù)準(zhǔn)則:
·函數(shù)的名稱應(yīng)該提示它的功能
·???????? 函數(shù)名稱以字母或底線開頭(不能以數(shù)字開頭)
實(shí)例
一個(gè)簡單的函數(shù),在其被呼叫時(shí)能輸出我的名稱:
<html> <body> <?php function writeName() { echo "Kai Jim Refsnes"; } echo "My name is "; writeName(); ?> </body> </html>
?
PHP 函數(shù) - 新增參數(shù)
為了給函數(shù)增加更多的功能,我們可以加入?yún)?shù)。參數(shù)類似變數(shù)。
參數(shù)就在函數(shù)名稱後面有一個(gè)括號(hào)內(nèi)指定。
實(shí)例1
下面的實(shí)例會(huì)輸出不同的名字,但姓氏是相同的:
<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>
實(shí)例2
下面的函數(shù)有兩個(gè)參數(shù):
<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>
PHP 函數(shù)- 傳回值
如需讓函數(shù)傳回一個(gè)值,請(qǐng)使用return 語句。
實(shí)例
<html> <body> <?php function add($x,$y) { $total=$x+$y; return $total; } echo "1 + 16 = " . add(1,16); ?> </body> </html>
?
自訂函數(shù)
我們之前呼叫的都是PHP內(nèi)建的函數(shù)。但是,程式語言真正的功能是透過創(chuàng)建自己的函數(shù)來實(shí)現(xiàn)的
PHP提供的函數(shù)大多是基礎(chǔ)的功能,譬如操作數(shù)組、存取資料庫、讀寫檔案等
但是,在現(xiàn)實(shí)專案中,PHP函數(shù)是無法滿足我們的需求的,我們找不到可以用來處理合約的函數(shù)、沒有計(jì)算出勤率的函數(shù)、沒有列印資料表格的函數(shù)
幸運(yùn)的是,我們不僅限於PHP內(nèi)建函數(shù),我們可以編寫自己的函數(shù)來完成任何任務(wù),這就是自訂函數(shù)。可以在自訂函數(shù)中使用PHP的內(nèi)建函數(shù),下面我們來了解函數(shù)的基本結(jié)構(gòu).
?
?
一次函數(shù)
在電腦中,函數(shù)最早是用來模擬各種數(shù)學(xué)函數(shù)的,看下面的程式碼
function?linear($x)?{
? ? $k?=?5 ;
? ? $b?=?3;
? ? $y?=?$k?*?$x?+?$b;
? ? return?$y;
}#o
此函數(shù)可以解一次方程式
?
??????? 函數(shù)為黑盒,且linear內(nèi)部的任何變數(shù)外部都無法存取
??????? 同樣,函數(shù)內(nèi)部也無法存取外部的變數(shù)
??????? 外部傳遞資料給函數(shù)使用參數(shù)
??????? 函數(shù)傳回資料給外部使用返回值
#函數(shù)的預(yù)設(shè)值回顧函數(shù)的語法,只要稍作修改,給第二個(gè)參數(shù)後面加上等號(hào),並且賦值,則參數(shù)2就有了預(yù)設(shè)值,函數(shù)呼叫時(shí)只需要傳遞一個(gè)參數(shù)function 函數(shù)名稱(參數(shù)1, 參數(shù)2 = 1) {
???????? 程式碼/語句;???????? return 傳回值;}函數(shù)名稱(1);此時(shí)函數(shù)體內(nèi)參數(shù)2的值為1(預(yù)設(shè)值)函數(shù)名稱(1, 2);此時(shí)函數(shù)體內(nèi)參數(shù)2的值是2(傳遞的值)?#?預(yù)設(shè)值的作用
在實(shí)際的開發(fā)中,我們常用到它,為什麼?
假設(shè)有一個(gè)系統(tǒng)函數(shù),已經(jīng)使用了很久,到處都有調(diào)用它的地方,如果需要添加新的邏輯,很有可能需要給它添加一個(gè)新的參數(shù)
如果新增了新參數(shù),這時(shí)函數(shù)的定義改變了,我們需要找到每個(gè)呼叫的地方去修改並增加這個(gè)參數(shù)
如果給個(gè)預(yù)設(shè)值呢?預(yù)設(shè)值用來控制關(guān)閉新的邏輯,這樣原先的程式碼不用做任何修改也不會(huì)執(zhí)行到新的邏輯,而新的程式碼,可以顯示的指定參數(shù)開啟新的邏輯?