自訂函數
函數的聲明
在編寫程式的過程中,我們會經常碰到某些功能模組在PHP中沒有提供系統函數,這樣就需要我們自己定義函數,即自訂函數,自訂函數的規則如下:
每個函數的第一行都是函數頭,由宣告函數的關鍵字function、函數名稱和參數清單三部分組成。
每個自訂函數都必須使用function關鍵字聲明。
函數名稱可以代表整個函數,可以將函數命名為任何名稱,只要遵循變數名稱的命名規則即可。但函數名稱必須唯一,且不能與系統函數重名。
宣告函數時函數名稱後面的花括號也是必須有的,在花括號中顯示了一組可以接受的參數列表,參數就是宣告的變量,然後在呼叫函數時傳遞給它值。參數清單可以沒有,也可以有—個或多個參數,多個參數使用逗號分隔。
函數體位於函數頭後面,用花括號括起來。函數被呼叫後,執行到retun語句或最外面的花括號後結束,回到呼叫的程式。
使用關鍵字return可以從函數中傳回一個值,然後回到呼叫程式處繼續執行。
Demo
<?php /* 将使用双层for循环输出表格的代码声明为函数,函数名为table */ function table() { echo "<table align='center' border='1' width='600'>"; for($out=0; $out < 10; $out++ ) { $bgcolor = $out%2 == 0 ? "red" : "blue";//各行换背景色 echo "<tr bgcolor=".$bgcolor.">"; for($in=0; $in <10; $in++) { echo "<td>".($out*10+$in)."</td>"; } echo "</tr>"; } echo "</table>"; } ?>
函數的調用
不管是自訂的函數還是系統函數,如果函數不被調用,就不會執行。函數被呼叫後開始執行函數體中的程式碼,執行完畢返回到呼叫的位置繼續向下執行。呼叫規則如下:
透過函數名稱去呼叫函數。
如果函數有參數列表,也可以透過函數名稱後面的圓括號傳入對應的值給參數,在函數體中使用參數來改變函數內部程式碼的執行行為。
如果函數有回傳值,當函數執行完畢時就會將return後面的值回到呼叫函數的位置。
Demo
<?php /* 将使用双层for循环输出表格的代码声明为函数,函数名为table */ function table() { echo "<table align='center' border='1' width='600'>"; for($out=0; $out < 10; $out++ ) { $bgcolor = $out%2 == 0 ? "red" : "blue";//各行换背景色 echo "<tr bgcolor=".$bgcolor.">"; for($in=0; $in <10; $in++) { echo "<td>".($out*10+$in)."</td>"; } echo "</tr>"; } echo "</table>"; } ?>
函數的參數
參數清單是由零個、一個或多個參數組成的。每個參數是一個表達式,用逗號分隔。對於有參函數,在PHP腳本程式中和被呼叫函數之間有資料傳遞關係。定義函數時函數名稱後面括號內的表達式稱為形式參數(簡稱「形參」),被呼叫函數名稱後面括號中的表達式稱為實際參數(簡稱「實參」),實參和形參需要接順序對應傳遞資料。如果函數沒有參數列表,函數執行的任務就是固定的,用戶在呼叫函數時不能改變函數內部的一些執行行為。
Demo
<?php /** 自定义函数table()时,声明三个参数,参数之间使用逗号分隔 @param string $tableName 需要一个字符串类型的表名 @param int $rows 需要一个整型数值设置表格的行数 @param int $cols 需要另一个整型值设置表格的列数 */ function table( $tableName, $rows, $cols ) { echo "<table align='center' border='1' width='600'>"; echo "<caption><h1> $tableName </h1></caption>"; for($out=0; $out < $rows; $out++ ) { //使用第二个参数$rows指定表行数 $bgcolor = $out%2 == 0 ? "red" : "blue"; echo "<tr bgcolor=".$bgcolor.">"; for($in=0; $in < $cols; $in++) { //使用第三个参数$cols指定表列数 echo "<td>".($out*$cols+$in)."</td>"; } echo "</tr>"; } echo "</table>"; } ?> <?php table("千度的表格",10,10);?>
函數的回傳值
函數的回傳值是函數執行的結果,呼叫函數的腳本程式不能直接使用函數體裡面的訊息,但可以透過關鍵字return向呼叫者傳遞資料。 return語句注意如下:
return語句可以向函數呼叫者傳回函數體內任意執行結果值。
在函數體中如果執行了return語句,它後面的語句就不會被執行。
Demo
<?php /** 自定义函数table()时,声明三个参数,参数之间使用逗号分隔 @param string $tableName 需要一个字符串类型的表名 @param int $rows 需要一个整型数值设置表格的行数 @param int $cols 需要另一个整型值设置表格的列数 */ function table( $tableName, $rows, $cols ) { $returnStr="这是返回的字符串"; echo "<table align='center' border='1' width='600'>"; echo "<caption><h1> $tableName </h1></caption>"; for($out=0; $out < $rows; $out++ ) { //使用第二个参数$rows指定表行数 $bgcolor = $out%2 == 0 ? "red" : "blue"; echo "<tr bgcolor=".$bgcolor.">"; for($in=0; $in < $cols; $in++) { //使用第三个参数$cols指定表列数 echo "<td>".($out*$cols+$in)."</td>"; } echo "</tr>"; } echo "</table>"; return $returnStr; } ?> <?php echo table("千度的表格",10,10);?>