PHP 函數(shù)
我們在之前的學(xué)習(xí)中已經(jīng)使用過大量的函數(shù):var_dump以及非常多的數(shù)組函數(shù),他們的特點是什么?
1. 都可以執(zhí)行一些特定的功能
2. 都有特殊的名稱
3. 都有或多或少的參數(shù)
4. 大多數(shù)函數(shù)都會有返回值,即使沒有也會執(zhí)行特定的操作
5. 不需要知道函數(shù)內(nèi)部的實現(xiàn)邏輯
函數(shù)存在于大多數(shù)的程序語言中,它們被用于分隔哪些能夠完成獨立明確任務(wù)的代碼。
函數(shù)名稱必須以字母或者下劃線開頭,后面跟隨字母、數(shù)字或者下劃線,另外函數(shù)名是大小寫不敏感的
PHP 的真正威力源自于它的函數(shù)。
在 PHP 中,提供了超過 1000 個內(nèi)建的函數(shù)。
PHP 內(nèi)建函數(shù)
如需查看所有數(shù)組函數(shù)的完整參考手冊和實例,請訪問我們的 PHP 參考手冊。
PHP 函數(shù)
我們之前調(diào)用的都是PHP內(nèi)置的函數(shù),大多是基礎(chǔ)的功能;但是,現(xiàn)實項目中,是無法滿足我們的需求的。 因此,我們并不只局限于PHP內(nèi)置函數(shù),我們可以編寫自己的函數(shù)來完成任何任務(wù)。
在本章中,我們將為您講解如何創(chuàng)建自己的函數(shù)。
如要在頁面加載時執(zhí)行腳本,您可以把它放到函數(shù)里。
函數(shù)是通過調(diào)用函數(shù)來執(zhí)行的。
你可以在頁面的任何位置調(diào)用函數(shù)。
創(chuàng)建 PHP 函數(shù)
函數(shù)是通過調(diào)用函數(shù)來執(zhí)行的。
function 函數(shù)名([參數(shù)名1[=值1], 參數(shù)名2[=值2], 參數(shù)名n[=值n]])
{
函數(shù)中的功能體(代碼/語句)
[return 返回值]
}
說明:
1. 函數(shù)以function開始
2. function后面接空格,空格后接函數(shù)名
3. 函數(shù)名與變量命名規(guī)則基本一樣,但是不同的是:函數(shù)名不區(qū)分大小寫
4. 所謂參數(shù)其實就是變量
5. 函數(shù)名后接括號,括號內(nèi)跟參數(shù),參數(shù)全都有[](中括號)括起來了,代表參數(shù)可填可不填
6. 參數(shù)的話,參數(shù)后可以接(=)等號,等號接默認(rèn)值。參數(shù)值也是用[](中括號)括起來的,代表選填
7. 函數(shù)后的參數(shù)變量,主要功能是把函數(shù)體外的變量值,傳入函數(shù)體內(nèi)來使用,函數(shù)體的變量和函數(shù)體外的變量通常是兩個不同的變量。
8. 函數(shù)中的具體功能(功能體)用大括號括起來,代表這是一個函數(shù)的功能區(qū)間
9. 函數(shù)可以有返回值也可以沒有返回值,用[](中括號)括起來的,代表選填。
10. return后接空格,空格后接返回值,若有return,return后的代碼均不執(zhí)行。
11. 函數(shù)的執(zhí)行沒有順序關(guān)系,可以在定義處之前的位置調(diào)用
12. 函數(shù)不能被定義兩次,即函數(shù)不能被重載
簡單的實例:
一個簡單的函數(shù),在其被調(diào)用時能輸出我的名稱:
<html> <body> <?php function writeName() { echo "Kai Jim Refsnes"; } echo "My name is "; writeName(); ?> </body> </html>
輸出:
My name is Kai Jim Refsnes
PHP 函數(shù) - 添加參數(shù)
為了給函數(shù)添加更多的功能,我們可以添加參數(shù)。參數(shù)類似變量。
參數(shù)就在函數(shù)名稱后面有一個括號內(nèi)指定。
實例 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
下面的函數(shù)有兩個參數(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>
輸出:
My name is Kai Jim Refsnes.
My sister's name is Hege Refsnes!
My brother's name is St?le Refsnes?
PHP 函數(shù) - 返回值
如需讓函數(shù)返回一個值,請使用 return 語句。
實例
<html> <body> <?php function add($x,$y) { $total=$x+$y; return $total; } echo "1 + 16 =" . add(1,16); ?> </body> </html>
輸出:
1 + 16 = 17
函數(shù)的默認(rèn)值
回顧函數(shù)的語法,只要稍作修改,給第二個參數(shù)后面加上等號,并且賦值,那么參數(shù)2就有了默認(rèn)值, 函數(shù)調(diào)用時只需要傳遞一個參數(shù)1
function 函數(shù)名([參數(shù)1, 參數(shù)2 = 2)
{
函數(shù)中的功能體(代碼/語句)
[return 返回值]
}
作用:
假設(shè)有一個系統(tǒng)函數(shù),已經(jīng)使用了很久,到處都有調(diào)用它的地方,如果需要添加新的邏輯,很有可能需要給它添加一個新的參數(shù)。 如果添加了新參數(shù),這時函數(shù)的定義改變了,我們需要找到每個調(diào)用的地方去修改并增加這個參數(shù)。 如果給個默認(rèn)值呢?默認(rèn)值用來控制關(guān)閉新的邏輯,這樣原先的代碼不用做任何修改也不會執(zhí)行到新的邏輯, 而新的代碼,可以顯示的指定參數(shù)打開新的邏輯。
實例
<html> <body> <?php function add($x,$y = 10) { $total=$x+$y; return $total; } echo "1 + 10 =" . add(1); ?> </body> </html>
由上面的實例看出,函數(shù)后的參數(shù)如果有默認(rèn)值,默認(rèn)值代表的這個參數(shù)可以不用傳值進去。
如:echo "1 + 10 = " . add(1)中只是傳了一個值 1 給 $x。