函數參數傳遞的方式有兩種:
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
|
|