php 函數經過關鍵字 function 建立函數。php
function functionName(){ //代碼段 }
php 函數準則:數組
* 函數的名稱應該提示出它的功能;函數
* 函數名稱以字母或者下劃線開頭(不能以數字開頭)code
一、經過php函數方法輸出「Hello World !」遊戲
<?php function printHello(){//聲明printHello函數 echo "Hello World !";//打印「Hello World !」 } printHello();//調用函數 ?>
二、帶參函數。由於php是若類型函數,因此,在調用函數時,參數個數能夠不等於函數聲明時的參數個數。同時,php函數容許有默認值。具體見下段代碼:作用域
<?php function add($num1, $num2) {//函數帶兩個參數 return $num1+$num2;//返回兩個參數的和 } echo add(1, 2);//兩個參數。結果是:3 echo "<br/>"; echo add(1);//一個參數,此時會給出warning,可是也能輸出結果。結果是:1 echo "<br/>"; echo add(1,2,3);//三個參數,前兩個遊戲,第三個參數無限.結果是:3 echo "<hr/>"; ?> <?php function add2($num1=0,$num2=1){//函數帶兩參數,第一個參數默認值是0,第二個參數默認值是1 return $num1+$num2; } echo add2(1,2);//兩個參數,結果是3 echo "<br/>"; echo add2(1);//一個參數,第二個參數沒給值,使用默認值1。結果是:2 echo "<br/>"; echo add2();//兩個參數均適用默認值,結果是:1 ?>
上段代碼的運行結果以下圖所示:字符串
三、全局變量。PHP函數內部的變量稱爲局部變量,函數外部的變量稱爲全局變量。函數內部訪問不到全局變量。get
函數變量有本身的做用域。io
函數內部訪問不到全局變量。function
在函數中引用全局變量,須要使用:global 關鍵字。
<?php $i=10; function hello() { $i=100; // 函數變量有本身的做用域,在該函數內部有效 echo $i; // 訪問不到全局變量,輸出局部變量$i,輸出結果是100 } hello(); echo "<br/>"; echo $i;//輸出結果是全局變量$i的值10 ?>
若要在函數內部引用全局變量,使用global關鍵字:
<?php $i=10; function hello() { global $i;// 使用global關鍵字在函數中引用全局變量 echo $i; //全局變量$i,10 $i=100;//賦值 } hello(); echo "<br/>"; echo $i;//100 ?>
四、靜態變量:在整個頁面中,函數屢次調用,某函數內的值能夠保存狀態(相對函數而言,值永久存在,函數外無效)。靜態變量使用 static 關鍵字。
<?php // 在整個頁面中,函數屢次調用,其函數內的值能夠保存狀態——靜態變量(相對於函數而言,值永久存在) function hello() { static $i=100; echo $i; $i++; } hello();//第一次調用hello()函數,輸出 100。而後執行自增操做,此時$i=101。(先輸出,再自增) echo "<br/>"; hello();//第二次調用hello()函數,由於$i是靜態變量,輸出101。而後自增,此時$i=102 echo "<br/>"; hello();//第三次調用hello(),輸出102。而後自增,此時$i=103 echo "<hr/>"; echo $i;//直接輸出$i,由於前面三次輸出的$i是輸出hello()函數中的靜態變量。此時,在函數外調用$i,因此,不存在。 ?>
五、返回值和返回參:返回值使用return關鍵字;返回參使用&關鍵字。
這裏的返回參相似於其餘語言的地址傳遞。
注意:php中,函數名的大小寫不區分。變量名嚴格區分大小寫。
<?php // 函數有返回值,經過return // 還能夠有返回參(同時也做爲輸入參數),參數也能夠被返回給調用者,經過&$參數名 function hello($name, &$msg) { echo $msg,"<hr/>"; // $msg="Hello, $Name :)"; // ERROR 形參名嚴格區分大小寫 $msg="Hello, $name :)"; return strtoupper($name);//strtoupper(字符串),將字符串中字母所有轉爲大寫 } $m="Hi"; echo Hello("zhangsan", $m); // 函數名大小寫不區分 echo "<br/>"; echo $m; ?>
上述代碼執行結果以下:
Hi //echo $msg ZHANGSAN //echo hello()的返回值 Hello, zhangsan :) //echo $msg。由於函數的第二個參數$msg前使用了&符號,相似地址傳遞
六、PHP函數的兩個內置函數:func_num_args( ) 和 func_get_args( )
func_num_args( ):函數參數的個數;
func_get_args( ):函數參數數組
<?php function add() { // echo func_num_args(); // 參數的個數 if (func_num_args()==0) return 0; else { $sum=0; foreach (func_get_args() as $arg) {//循環函數參數的數組 $sum+=$arg; } return $sum; } } ?> <?php echo add()?><br/> <?php echo add(1)?><br/> <?php echo add(1, 9)?><br/> <?php echo add(1, 9, 99)?><br/>
上述代碼中,add()函數的做用是返回函數中參數的總和。若是沒有參數,則返回0。