初探語法資料型態變數與常數外部變數環境變數運算元流程控制引用檔案物件
PHP 簡介

自定函數

基本語法
 function myFunction( [$arg_1, $arg_2, ...] ) {
   statements;
   ......
   return $something;
 }


函數的參數
 只要是 PHP 所支援的變數型態都可以做為參數之用,甚至是陣列也可以。
 <?
 $a = array(1, 2, 3);
 function myFunction( $arr ) {
   return $arr[0] + $arr[1] + $arr[2];
 }
 echo myFunction($a);
 ?>
 輸入參數是預設為「傳值(pass by value)」方式,您也可以要求改為「傳址(pass by reference)」方式,以傳入參數的指標。方法就是在參數的前面加上 & 符號即可。
 <?
 $a = 3;
 $b = 6;
 function myFunction( &$arg_1, $arg_2 ) {
   $arg_1++;
   $arg_2++;
 }
 myFunction($a, $b);    // $a 傳址,$b 傳值
 echo $a . ", " . $b;     // 4, 6
 myFunction($a, &$b);   // 強迫 $b 傳址,PHP4 以後不建議使用
 echo $a . ", " . $b;     // 5, 7
 ?>
 參數可以事先給予內定值,當使用者未傳入該參數值時,即可用內定值代替之。有定義內定值的參數在呼叫該函式時可以省略不傳,但一定要放在所有參數的最右邊,否則 PHP 會誤以為您少給了一個參數。
 <?
 function myFunction( $a, $b=10 ) {
   $a++;
   $b++;
   echo $a . ", " . $b;
 }
 echo myFunction(3);      // 4, 11
 echo myFunction(3,6);     // 4, 7
 ?>

傳回值
 傳回值與傳入的參數值一樣,各種資料型態皆可。若希望傳回一個以上的值,可以使用陣列型態。例:
 <?
 function myFunction( ) {
   return array(0, 1, 2);
 }
 list($a, $b, $c) = myFunction( );
 echo $a, $b, $c;
 ?>

以變數為名的函數(Variable Functions)
 PHP 也支援以變數為名的函數,就類似以變數為名的變數(Variable Variables)一樣。
 <?
 function foo() {
   echo "In foo()<br>\n";
 }

 function bar( $arg = '' ) {
   echo "In bar(); argument was '$arg'.<br>\n";
 }

 $func = 'foo';
 $func();          // In foo()
 $func = 'bar';
 $func( 'test' );        // In bar(); argument was 'test'.
 ?>
題外話:

 您注意到了嗎?在上面這個例子中,echo 字串時多加了 <br>\n,這有什麼作用呢?

 加上 <br>,可以使得瀏覽器在顯示該字串時產生換行的效果;加上 \n,則可以使得該字串在原始碼中也有換行的效果。


初探語法資料型態變數與常數外部變數環境變數運算元流程控制引用檔案物件