PHP 函式
PHP 的真正強大之處在於其函式。
PHP 擁有超過 1000 個內建函式,此外您還可以建立自己的自定義函式。
PHP 內建函式
PHP 擁有超過 1000 個內建函式,可以直接在指令碼中呼叫,以執行特定任務。
請檢視我們的 PHP 參考,瞭解 PHP 內建函式的 完整概述。
PHP 使用者定義函式
除了內建的 PHP 函式外,還可以建立自己的函式。
- 函式是一組可以重複使用的語句塊。
- 函式在頁面載入時不會自動執行。
- 函式將透過呼叫該函式來執行。
建立函式
使用者定義函式宣告以關鍵字 function
開頭,後跟函式名稱
示例
function myMessage() {
echo "Hello world!";
}
注意: 函式名稱必須以字母或下劃線開頭。函式名稱不區分大小寫。
提示: 為函式起一個能反映其功能的名稱!
呼叫函式
要呼叫函式,只需寫出其名稱,後跟括號 ()
在我們的示例中,我們建立了一個名為 myMessage()
的函式。
開頭的花括號 {
表示函式程式碼的開始,結尾的花括號 }
表示函式程式碼的結束。
該函式輸出“Hello world!”。
PHP 函式引數
資訊可以透過引數傳遞給函式。引數就像變數一樣。
引數在函式名之後、括號內指定。您可以新增任意數量的引數,只需用逗號分隔即可。
下面的示例有一個帶有一個引數 ($fname)
的函式。當呼叫 familyName()
函式時,我們也會傳遞一個名字,例如 ("Jani")
,這個名字在函式內部使用,輸出多個不同的名字,但姓氏相同。
示例
function familyName($fname) {
echo "$fname Refsnes.<br>";
}
familyName("Jani");
familyName("Hege");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
自己動手試一試 »
下面的示例有一個帶有兩個引數 ($fname, $year)
的函式
示例
function familyName($fname, $year) {
echo "$fname Refsnes. Born in $year <br>";
}
familyName("Hege", "1975");
familyName("Stale", "1978");
familyName("Kai Jim", "1983");
自己動手試一試 »
PHP 預設引數值
下面的示例演示瞭如何使用預設引數。如果我們呼叫 setHeight()
函式而沒有傳遞引數,它將使用預設值作為引數。
示例
function setHeight($minheight = 50) {
echo "The height is : $minheight <br>";
}
setHeight(350);
setHeight(); // will use the default value of 50
setHeight(135);
setHeight(80);
自己動手試一試 »
PHP 函式 - 返回值
要讓函式返回值,請使用 return
語句。
示例
function sum($x, $y) {
$z = $x + $y;
return $z;
}
echo "5 + 10 = " . sum(5, 10) . "<br>";
echo "7 + 13 = " . sum(7, 13) . "<br>";
echo "2 + 4 = " . sum(2, 4);
自己動手試一試 »
透過引用傳遞引數
在 PHP 中,引數通常是按值傳遞的,這意味著函式中使用的是值的副本,並且傳遞到函式中的變數不能被更改。
當函式引數透過引用傳遞時,對引數的更改也會更改傳入的變數。要將函式引數轉換為引用,請使用 &
運算子。
示例
使用按引用傳遞的引數更新變數
function add_five(&$value) {
$value += 5;
}
$num = 2;
add_five($num);
echo $num;
自己動手試一試 »
可變數量的引數
透過在函式引數前使用 ...
運算子,函式可以接受任意數量的引數。這也稱為可變引數函式。
可變引數會變成一個數組。
示例
一個不知道會接收多少個引數的函式
function sumMyNumbers(...$x) {
$n = 0;
$len = count($x);
for($i = 0; $i < $len; $i++) {
$n += $x[$i];
}
return $n;
}
$a = sumMyNumbers(5, 2, 6, 2, 7, 7);
echo $a;
自己動手試一試 »
您只能有一個可變長度的引數,並且它必須是最後一個引數。
示例
可變引數必須是最後一個引數
function myFamily($lastname, ...$firstname) {
txt = "";
$len = count($firstname);
for($i = 0; $i < $len; $i++) {
$txt = $txt."Hi, $firstname[$i] $lastname.<br>";
}
return $txt;
}
$a = myFamily("Doe", "Jane", "John", "Joey");
echo $a;
自己動手試一試 »
如果可變引數不是最後一個引數,您將收到一個錯誤。
示例
在兩個引數中的第一個引數上使用 ...
運算子,將引發一個錯誤
function myFamily(...$firstname, $lastname) {
$txt = "";
$len = count($firstname);
for($i = 0; $i < $len; $i++) {
$txt = $txt."Hi, $firstname[$i] $lastname.<br>";
}
return $txt;
}
$a = myFamily("Doe", "Jane", "John", "Joey");
echo $a;
自己動手試一試 »
PHP 是一種弱型別語言
在上面的示例中,請注意,我們不必告訴 PHP 變數是什麼資料型別。
PHP 會根據變數的值自動為其關聯資料型別。由於資料型別不是嚴格定義的,您可以執行諸如將字串新增到整數中而不會導致錯誤的操作。
在 PHP 7 中,添加了型別宣告。這使我們可以在宣告函式時指定預期的資料型別,並透過新增 strict
宣告,如果資料型別不匹配,它將丟擲一個“致命錯誤”。
在下面的示例中,我們嘗試在不使用 strict
的情況下將數字和字串都發送到函式中
示例
function addNumbers(int $a, int $b) {
return $a + $b;
}
echo addNumbers(5, "5 days");
// since strict is NOT enabled "5 days" is changed to int(5), and it will return 10
自己動手試一試 »
要指定 strict
,我們需要設定 declare(strict_types=1);
。這必須放在 PHP 檔案的第一行。
在下面的示例中,我們嘗試將數字和字串都發送到函式中,但在這裡我們添加了 strict
宣告
示例
<?php declare(strict_types=1); // strict requirement
function addNumbers(int $a, int $b) {
return $a + $b;
}
echo addNumbers(5, "5 days");
// since strict is enabled and "5 days" is not an integer, an error will be thrown
?>
自己動手試一試 »
strict
宣告強制事物按照預期方式使用。
PHP 返回型別宣告
PHP 7 還支援 return
語句的型別宣告。與函式引數的型別宣告一樣,透過啟用嚴格要求,它將在型別不匹配時丟擲“致命錯誤”。
要為函式返回值宣告型別,請在宣告函式時,在左花括號 ( {
) 前新增一個冒號 ( :
) 和型別。
在下面的示例中,我們為函式指定了返回型別
示例
<?php declare(strict_types=1); // strict requirement
function addNumbers(float $a, float $b) : float {
return $a + $b;
}
echo addNumbers(1.2, 5.2);
?>
自己動手試一試 »
您可以指定與引數型別不同的返回型別,但請確保返回值的型別正確
示例
<?php declare(strict_types=1); // strict requirement
function addNumbers(float $a, float $b) : int {
return (int)($a + $b);
}
echo addNumbers(1.2, 5.2);
自己動手試一試 »