正文

函数参数传递的方式2009-07-29 18:57:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/sovf/45812.html

分享到:

函数参数传递的方式有两种: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); ?>

阅读(4095) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册