像數學中的函數一樣,
y=f(x)是函數基本的表達形式,
x可看做是參數,
y可看做是傳回值,即函數定義就是一個被命名的、獨立的程式碼片段,它執行特定的任務,並可能給調用它的程式返回一個值。
自訂函數
函數的聲明
在編寫程式的過程中,我們會經常碰到某些功能模組在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>"; } ?>
函數的調用
不管是自訂的函數還是系統函數,如果函數不被調用,就不會執行。函數被調用後開始執行函數體中的代碼,執行完畢返回到調用的位置繼續向下執行。調用規則如下:
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 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語句注意點如下:
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);?>