函数参数传递的方式有两种:
1 、传值方式。缺省情况下,函数参数通过传值的方式传递,因此即使在函数内部改变参数的值,它并不会改变函数外部参数的值。 2 、传址方式。传址时只需在函数调用时在参数的前面加上“&”号即可。将函数外部的值的内存地址传递给内部的参数,在函数内部的所有操作都会改变函数外部参数的值。所以希望函数修改外部参数的值,必须使用传址传址方式。 <?php
//定义一个函数 function f3 ( $a ){ $a ++; } $x = 1 ; f3 ( $x ) ; echo " x= $x " ; //传值方式调用函数 $x = 1 ; f3 ( & $x ) ; echo " x= $x " ; //传址方式调用函数 ?> <?php function add_some_extra ( & $string ) { $string .= ' and something extra. ' ; } $str = ' This is a string, ' ; add_some_extra ( $str ) ; echo $str ; // 输出'This is a string, and something extra.' ?> <?php /* 在PHP中,函数不需要在被调用之前定义,在调用后才进行定义也是允许的。 在少数情况下,函数在需要一定的判断条件下,才能被定义。这样函数的定义必须在函数被调用之前完成。 */ $makefoo = true ; bar () ; /*你不能调用foo()函数,它在这里不存在。但是能够调用bar(),调用之后在后面进行定义即可。*/ if ( $makefoo ) { function foo () { echo " foofoo " ; } } if ( $makefoo ) foo () ; /* 现在我们可以正常调用foo(),因为只有$makefoo为true和定义了foo()函数后,foo()函数才存在。 */ function bar () { echo " barbar " ; } ?> <?php function foo () { function bar () { echo " I don't exist until foo() is called. " ; } } /* 这里不能调用bar(),因为它不存在。 */ foo () ; /* 现在我们可以调用bar(),只有在调用foo()后,bar()才存在。 */ bar () ; ?> 为函数指定默认参数的值 <?php function test_defaultargs ( $arg = " default value " ){ echo " 参数值为: " . $arg . " <br> " ; } test_defaultargs () ; test_defaultargs ( " new value " ) ; ?> <?php function makecoffee ( $type = " cappuccino " ) { return " Making a cup of $type . " ; } echo makecoffee () ; echo makecoffee ( " espresso " ) ; ?> 请注意当使用默认参数时,任何默认参数必须放在任何非默认参数的右侧;否则,可能函数将不会按照预期的情况运行。 <?php
function makeyogurt ( $type = " acidophilus " , $flavour ) { return " Making a bowl of $type $flavour . " ; } echo makeyogurt ( " raspberry " ) ; // 这个例子将不会按照我们预期的情况运行。 ?> <?php function makeyogurt ( $flavour , $type = " acidophilus " ) { return " Making a bowl of $type $flavour . " ; } echo makeyogurt ( " raspberry " ) ; // 这个例子的输出是:Making a bowl of acidophilus raspberry. ?> 函数名可变 <?php function f1 (){ echo " 这是函数f1()。<br> " ; } function f2 (){ echo " 这是函数f2()。<br> " ; } $var1 = " f1 " ; $var1 () ; //调用函数f1() $var1 = " f2 " ; $var1 () ; //调用函数f2() //注意:调用可变函数名需要在变量前加$。 ?> <?php function foo () { echo " foofoo.<br> " ; } function bar ( $arg = '' ) { echo " barbar' $arg '.<br> " ; } function echoit ( $string ) { echo $string ; } $func = ' foo ' ; $func () ; // 调用foo() $func = ' bar ' ; $func ( ' test ' ) ; // 调用bar() $func = ' echoit ' ; $func ( ' test ' ) ; // 调用echoit() ?> 函数可变长度参数 <?php //向函数传递数组 function takes_array ( $input ) { echo " $input [0] + $input [1] = " , $input [ 0 ] + $input [ 1 ] ; } ?> func_num_args() -- 返回传递给函数的参数的数量 <?php function foo () { $numargs = func_num_args () ; echo " Number of arguments: $numargs .'<br>' " ; } foo ( 1 , 2 , 3 ) ; ?> func_get_arg() -- 从参数列表中返回一个参数值 <?php function foo () { $numargs = func_num_args () ; echo " Number of arguments: $numargs .'<br>' " ; if ( $numargs >= 2 ) { echo " Second argument is: " . func_get_arg ( 1 ) . " <br> " ; } } foo ( 1 , 2 , 3 ) ; ?> func_get_args() -- 返回一个包含函数参数的数组 <?php function foo () { $numargs = func_num_args () ; echo " Number of arguments: $numargs .'<br>' " ; if ( $numargs >= 2 ) { echo " Second argument is: " . func_get_arg ( 1 ) . " <br> " ; } $arg_list = func_get_args () ; for ( $i = 0 ; $i < $numargs ; $i ++ ) { echo " Argument $i is: " . $arg_list [ $i ] . " <br> " ; } } foo ( 1 , 2 , 3 ) ; ?> 原文出自【比特网】,转载请保留原文链接:http://bbs./thread-350557-1-1.html
|
|