Information may be passed to functions via the argument list, which is a comma-delimited list of expressions.
PHP supports passing arguments by value (the default), passing by reference, and default argument values. Variable-length argument lists are also supported, see also the function references for func_num_args(), func_get_arg(), and func_get_args() for more information.
Example #1 Passing arrays to functions
<?php
function takes_array ( $input )
{
echo "$input[0] + $input[1] = " , $input [ 0 ]+ $input [ 1 ];
}
?> By default, function arguments are passed by value (so that if the value of the argument within the function is changed, it does not get changed outside of the function). To allow a function to modify its arguments, they must be passed by reference.
To have an argument to a function always passed by reference, prepend an ampersand (&) to the argument name in the function definition:
Example #2 Passing function parameters by reference
<?php
function add_some_extra (& $string )
{
$string .= 'and something extra.' ;
}
$str = 'This is a string, ' ;
add_some_extra ( $str );
echo $str ; // outputs 'This is a string, and something extra.'
?> A function may define C++-style default values for scalar arguments as follows:
Example #3 Use of default parameters in functions
<?php
function makecoffee ( $type = "cappuccino" )
{
return "Making a cup of $type.\n" ;
}
echo makecoffee ();
echo makecoffee ( null );
echo makecoffee ( "espresso" );
?> The output from the above snippet is:
Making a cup of cappuccino.
Making a cup of .
Making a cup of espresso.
PHP also allows the use of arrays and the special type NULL as default values, for example:
Example #4 Using non-scalar types as default values
<?php
function makecoffee ( $types = array( "cappuccino" ), $coffeeMaker = NULL )
{
$device = is_null ( $coffeeMaker ) ? "hands" : $coffeeMaker ;
return "Making a cup of " . join ( ", " , $types ). " with $device.\n" ;
}
echo makecoffee ();
echo makecoffee (array( "cappuccino" , "lavazza" ), "teapot" );
?> The default value must be a constant expression, not (for example) a variable, a class member or a function call.
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:
Example #5 Incorrect usage of default function arguments
<?php
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/phptest/functest.html on line 41
Making a bowl of raspberry .
Now, compare the above with this:
Example #6 Correct usage of default function arguments
<?php
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.
Note: As of PHP 5, default values may be passed by reference.
PHP 4 and above has support for variable-length argument lists in user-defined functions. This is really quite easy, using the func_num_args(), func_get_arg(), and func_get_args() functions.
No special syntax is required, and argument lists may still be explicitly provided with function definitions and will behave as normal.
© 2005-2008 BlaBla.cn 版权所有