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 回傳值] 

##說明:

1. 函數以function開始

2. function後面接空格,空格後接函數名稱

3. 函數名稱與變數命名規則基本上一樣,但是不同的是:函數名稱不區分大小寫

4. 所謂參數其實就是變數

5. 函數名稱後接括號,括號內跟參數,參數全都有[](中括號)括起來了,代表參數可填可不填

6. 參數的話,參數後可以接(=)等號,等號接預設值。參數值也是用[](中括號)括起來的,代表選填

7. 函數後的參數變量,主要功能是把函數體外的變量值,傳入函數體內來使用,函數體的變數和函數體外的變數通常是兩個不同的變數。

8. 函數中的特定函數(功能體)用大括號括起來,代表這是一個函數的功能區間

9.函數可以有回傳值也可以沒有回傳值,用[](中括號)括起來的,代表選填。

10. return後接空格,空格後面接回傳值,若有return,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。


繼續學習
||
<html> <body> <?php function writeName() { echo "Kai Jim Refsnes"; } echo "My name is "; writeName(); ?> </body> </html>