FUNCTION

函式的定義方式如下 :

function foo ($arg_1, $arg_2, ..., $arg_n) 
{     echo "Example function.\n";
     return $retval;
 }      

所有函式在被引前, 必需先定義好.

Returning values

Return 這個敘述會將函式的計算結果傳回給呼叫它的程式. . 傳回值可以是任何型態, 包括物件和陣列.

function my_sqrt ($num) {     return $num * $num; } echo my_sqrt (4);   // outputs '16'.       

function foo() {    return array (0, 1, 2); } list ($zero, $one, $two) = foo();       

Arguments

Information may be passed to functions via the argument list, which is a comma-delimited list of variables and/or constants.

PHP3 supports passing arguments by value (the default), passing by reference , and default argument values . Variable-length argument lists are not supported, but a similar effect may be achieved by passing arrays.

function takes_array($input) {     echo "$input[0] + $input[1] = ", $input[0]+$input[1]; }       

Passing by reference

By default, function arguments are passed by value. If you wish to allow a function to modify its arguments, you may pass them by reference.

If you wish a function's argument to always be passed by reference, you can prepend an ampersand (&) to the argument name in the function definition:

function foo( &$bar ) {     $bar .= ' and something extra.'; } $str = 'This is a string, '; foo ($str); echo $str;    // outputs 'This is a string, and something extra.'        

If you wish to pass a variable by reference to a function which does not do this by default, you may prepend an ampersand to the argument name in the function call:

function foo ($bar) {     $bar .= ' and something extra.'; } $str = 'This is a string, '; foo ($str); echo $str;    // outputs 'This is a string, ' foo (&$str); echo $str;    // outputs 'This is a string, and something extra.'        

Default values

A function may define C++-style default values for scalar arguments as follows:

function makecoffee ($type = "cappucino") {     echo "Making a cup of $type.\n"; } echo makecoffee (); echo makecoffee ("espresso");        

The output from the above snippet is:

Making a cup of cappucino. Making a cup of espresso.       

The default value must be a constant expression, not (for example) a variable or class member.

Note that when using default arguments, any defaults should be on the right side of any non-default arguments; otherwise, things will not work as expected. Consider the following code snippet:

function makeyogurt ($type = "acidophilus", $flavour) {     return "Making a bowl of $type $flavour.\n"; }  echo makeyogurt ("raspberry");   // won't work as expected        

The output of the above example is:

Warning: Missing argument 2 in call to makeyogurt() in  /usr/local/etc/httpd/htdocs/php3test/functest.html on line 41 Making a bowl of raspberry .       

Now, compare the above with this:

function makeyogurt ($flavour, $type = "acidophilus") {     return "Making a bowl of $type $flavour.\n"; }  echo makeyogurt ("raspberry");   // works as expected        

The output of this example is:

Making a bowl of acidophilus raspberry.