转载

PHP 函数参数

PHP 函数参数

可以通过参数向函数传递信息。参数类似变量。

参数被定义在函数名之后,括号内部。
您可以添加任意多参数,只要用逗号隔开即可。

下面的例子中的函数有一个参数($fname)。
当调用 familyName() 函数时,我们同时要传递一个名字(例如 Bill),这样会输出不同的名字,但是姓氏相同:

实例

  1. <?php 
  2. function familyName($fname) { 
  3.   echo "$fname Zhang.<br>"; 
  4.  
  5. familyName("Li"); 
  6. familyName("Hong"); 
  7. familyName("Tao"); 
  8. familyName("Xiao Mei"); 
  9. familyName("Jian"); 
  10. ?> 

下面的例子中的函数有两个参数($fname 和 $year):

实例

  1. <?php 
  2. function familyName($fname,$year) { 
  3.   echo "$fname Zhang. Born in $year <br>"; 
  4.  
  5. familyName("Li","1975"); 
  6. familyName("Hong","1978"); 
  7. familyName("Tao","1983"); 
  8. ?> 

PHP 默认参数值

下面的例子展示了如何使用默认参数。
如果我们调用没有参数的 setHeight() 函数,它的参数会取默认值:

实例

  1. <?php 
  2. function setHeight($minheight=50) { 
  3.   echo "The height is : $minheight <br>"; 
  4.  
  5. setHeight(350); 
  6. setHeight(); // 将使用默认值 50 
  7. setHeight(135); 
  8. setHeight(80); 
  9. ?> 

扩展阅读:

通过参数列表可以传递信息到函数,即以逗号作为分隔符的表达式列表。参数是从左向右求值的。

PHP 支持按值传递参数(默认),通过引用传递参数以及默认参数,也支持可变长度参数列表。

Example #1 向函数传递数组

  1. <?php 
  2. function takes_array ( $input ) 
  3. echo " $input [ 0 ] + $input [ 1 ] = " , $input [ 0 ]+ $input [ 1 ]; 
  4. ?>  

通过引用传递参数

默认情况下,函数参数通过值传递(因而即使在函数内部改变参数的值,它并不会改变函数外部的值)。
如果希望允许函数修改它的参数值,必须通过引用传递参数。

如果想要函数的一个参数总是通过引用传递,可以在函数定义中该参数的前面加上符号 &:

Example #2 用引用传递函数参数

  1. <?php 
  2. function add_some_extra (& $string ) 
  3. $string .= 'and something extra.' ; 
  4. $str = 'This is a string, ' ; 
  5. add_some_extra ( $str ); 
  6. echo $str ; // outputs 'This is a string, and something extra.' 
  7. ?> 

默认参数的值

函数可以定义 C++ 风格的标量参数默认值,如下所示:

Example #3 在函数中使用默认参数

  1. <?php 
  2. function makecoffee ( $type = "cappuccino" ) 
  3. return "Making a cup of $type ./n" ; 
  4. echo makecoffee (); 
  5. echo makecoffee ( null ); 
  6. echo makecoffee ( "espresso" ); 
  7. ?> 

以上例程会输出:

  1. Making a cup of cappuccino. 
  2. Making a cup of . 
  3. Making a cup of espresso. 

PHP 还允许使用数组 array 和特殊类型 NULL 作为默认参数,例如:

Example #4 使用非标量类型作为默认参数

  1. <?php 
  2. function makecoffee ( $types = array"cappuccino" ), $coffeeMaker = NULL ) 
  3. $device = is_null ( $coffeeMaker ) ? "hands" : $coffeeMaker ; 
  4. return "Making a cup of " . join ( ", " , $types ). " with $device ./n" ; 
  5. echo makecoffee (); 
  6. echo makecoffee (array"cappuccino" , "lavazza" ), "teapot" ); 
  7. ?> 

默认值必须是常量表达式,不能是诸如变量,类成员,或者函数调用等。

注意当使用默认参数时,任何默认参数必须放在任何非默认参数的右侧;否则,函数将不会按照预期的情况工作。考虑下面的代码片断:

Example #5 函数默认参数的不正确用法

  1. <?php 
  2. function makeyogurt ( $type = "acidophilus" , $flavour ) 
  3. return "Making a bowl of $type $flavour ./n" ; 
  4.  
  5. echo makeyogurt ( "raspberry" ); // won't work as expected 
  6. ?> 

以上例程会输出:

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

现在,比较上面的例子和这个例子:

Example #6 函数默认参数正确的用法

  1. <?php 
  2. function makeyogurt ( $flavour , $type = "acidophilus" ) 
  3. return "Making a bowl of $type $flavour ./n" ; 
  4.  
  5. echo makeyogurt ( "raspberry" ); // works as expected 
  6. ?> 

以上例程会输出:

  1. Making a bowl of acidophilus raspberry. 

Note: 自 PHP 5 起,默认值可以通过引用传递。

可变数量的参数列表

PHP 在用户自定义函数中支持可变数量的参数列表。
其实很简单,只需使用 func_num_args() , func_get_arg() ,和 func_get_args() 函数即可。

可变参数并不需要特别的语法,参数列表仍按函数定义的方式传递给函数,并按通常的方式使用这些参数。

正文到此结束
Loading...