**PHP 的真正力量來自它的函數:它擁有超過 1000 個內建的函數。**
## PHP 用戶定義函數
除了內建的 PHP 函數,我們可以創建我們自己的函數。
函數是可以在程序中重復使用的語句塊。
頁面加載時函數不會立即執行。
函數只有在被調用時才會執行。
## 在 PHP 創建用戶定義函數
用戶定義的函數聲明以關鍵詞 "**function**" 開頭:
語法
~~~
function functionName() {
被執行的代碼;
}
~~~
注釋:函數名能夠以字母或下劃線開頭(而非數字)。
注釋:函數名對大小寫不敏感。**點評:php里,只有普通變量對大小寫敏感**
提示:函數名應該能夠反映函數所執行的任務。
在下面的例子中,我們創建名為 "writeMsg()" 的函數。打開的花括號({)指示函數代碼的開始,而關閉的花括號(})指示函數的結束。此函數輸出 "Hello world!"。如需調用該函數,只要使用函數名即可:
實例
~~~
<?php
function writeMsg() {
echo "Hello world!";
}
writeMsg(); // 調用函數
?>
~~~
## PHP 函數參數
可以通過參數向函數傳遞信息。參數類似變量。
參數被定義在函數名之后,括號內部。您可以添加任意多參數,只要用逗號隔開即可。
下面的例子中的函數有一個參數($fname)。當調用 familyName() 函數時,我們同時要傳遞一個名字(例如 Bill),這樣會輸出不同的名字,但是姓氏相同:
~~~
<?php
function familyName($fname) {
echo "$fname Zhang.<br>";
}
familyName("Li");
familyName("Hong");
familyName("Tao");
familyName("Xiao Mei");
familyName("Jian");
?>
~~~

下面的例子中的函數有兩個參數($fname 和 $year):
~~~
<?php
function familyName($fname,$year) {
echo "$fname Zhang. Born in $year <br>";
}
familyName("Li","1975");
familyName("Hong","1978");
familyName("Tao","1983");
?>
~~~

## PHP 默認參數值
下面的例子展示了如何使用默認參數。如果我們調用沒有參數的 setHeight() 函數,它的參數會取默認值:
~~~
<?php
function setHeight($minheight=50) {
echo "The height is : $minheight <br>";
}
setHeight(350);
setHeight(); // 將使用默認值 50
setHeight(135);
setHeight(80);
?>
~~~
## PHP 函數 - 返回值
如需使函數返回值,請使用 return 語句:
~~~
<?php
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);
?>
~~~