函數的定義:函數就是一段封裝好的代碼塊,可以隨時調用。在PHP中有兩種函數:自訂函數與系統函數。
自訂函數文法格式:
function 函數名稱([參數1,[參數2]....])
{
函數體(程式內容敘述)
[return 傳回值;]
}
註:[]裡的東西可有可無
自訂函數的名稱:
它是函數在程式碼中的識別名稱,函數名可以是以字母或底線開頭後跟零個或多個字母、底線和數位任何字串。
符合變數名的命名規則
函數名不區分大小寫。
函數名不能重複,命名函數函數時不可使用已經聲明的函數(這個和變數的命名不同,變數可以覆蓋前一個變數名,而函數不可以),和PHP系統函數名稱。
函數名稱和變數名稱的區別:
變數名嚴格區分大小寫,函數名不區分大小寫。
參數(可以分為形參和實參):
所謂參數就是:用來把數值從函數外部傳入函數體中,並用來加以運算處理。
參數之間用“,”隔開,當函數不需要任何數值傳入時,可以省略參數。
形參:聲明函數時,函數名後面括弧內的運算式稱為形參。
function table(形參1,形參2){}
實參:被調用函數名後面括弧中的運算式稱為實參。
table(實參1,實參2);
實參和形參需要按順序對應傳遞資料。
function table2($rows,$cols,$color='yellow'){ echo '<table border="1" bgcolor="'.$color.'">'; for($i = 0;$i < $rows;$i++){ echo '<tr>'; for($n = 0;$n <$cols;$n++){ echo '<td>'.($i*$rows+$n).'</td>'; } echo '</tr>'; }}table2(10,10,'red');
注意:函數參數中,沒有預設值的放到前面,有預設值的放在參數列表中的後邊。
table2($rows,$cols,$color = 'yellow')
傳回值:
當調用函數時需要它返回一些數值,那麼就要在函數體中用return語句實現。
格式如下:
return 傳回值;//傳回值可以是變數也可以是一個運算式
exit(); //無傳回值 void
return語句在函數體中使用時,有以下兩個作用:
return語句可以向函數調用者返回函數體中任意確定的值。
將程式控制權返回到調用者的範圍,即退出函數。在函數中如果執行了return語句,它後面的語句就不會被執行了。
說明:如果函數沒有傳回值,就只能算是一個執行過程,只依靠函數做一些事情還不夠,有時更需要在程式指令碼中
使用函數執行後的結果。由於變數的範圍的差異,調用函數的指令碼程式不能直接使用函數體裡面的資訊,但可以通過關鍵字return向調用者傳遞資料。
echo與return:
echo直接輸出到瀏覽器,不能再加工,不能賦值給變數
return可以賦值給變數,變數是資料的臨時容器(return返回一個值,等待一個變數接收它)
注意: 如果函數有傳回值,當函數執行完畢時就會將return後面的值返回到調用函數的位置處,這樣就可以把函數名稱當作函數返回的值使用。(這時調用函數時對ruturn後面的值是不管用的(retrun的值已經返回到調用函數的位置處,return以前的輸出還是可以照樣輸出),因為她已經變成某個值了無法用funName();輸出,需要echo funName()才可以輸出。)
<?phpheader("content-type:text/html;charset=utf-8");echo show();echo '<hr>';function show(){ echo 'ccc'; return 'aaa'; //return所在行之後的代碼不會執行 echo 111;}//函數的調用,不會將return後面的值返回show();echo '<hr>';//return返回的值 需要一個變數來接收它$result = show();echo $result;echo '<hr>';//也可以直接輸出 函數名稱echo show();echo '<hr>';
輸出結果:
cccaaa
ccc
cccaaa
cccaaa
函數的調用:
格式:函數名();
說明:table();
不管是自訂函數還是系統函數,如果函數不被調用,就不會執行。
通過函數名稱去調用函數,並讓函數體的代碼運行,調用幾次函數體就會執行幾次。
在PHP中可以在函數的聲明之後調用,也可以在函數的聲明之前調用,還可以在函數中調用函數。
駝峰命名法:
function showInfo(){}function ShowInfo(){}
判斷函數是否存在: function_exists()
if(function_exists('table')){ echo 'table';}else{ echo 'table函數不存在,請先定義table函數';}
PHP變數的範圍:
<?php$username = 'shifang';function stu(){ $name = 'libai'; echo $name; //無法調用外部的$username,而在函數體內也沒有聲明$username10 echo $username; echo 'xxxx';}stu();//函數體外無法調用函數體內的變數16.echo $name;echo $username;
結果:
libai
Notice: Undefined variable: username in D:\xampp\htdocs\89\Exercise\2016-7-28 PHP function\007quanju.php on line 10
xxxx
Notice: Undefined variable: name in D:\xampp\htdocs\89\Exercise\2016-7-28 PHP function\007quanju.php on line 16
shifang
在PHP的頁面中聲明的變數,叫“全域變數”.
函數內的變數叫“局部變數”.
二者沒有半毛錢關係:函數內的變數,外部無法調用,函數外的變數,函數無法調用
(某戲班子到某學校唱戲,兩者的花名冊都不可相互調用)
靜態變數:
<?phpfunction tongji(){ static $n = 0; echo $n; $n++;}tongji();tongji();tongji();echo '<hr>';function jishu(){ $m = 0; echo $m; $m++;}jishu();jishu();jishu();
輸出結果:
0123
00000