您的位置:首页 > 编程语言 > PHP开发

php 函数参数传递的方式传值传址

2012-08-27 16:07 423 查看


函数参数传递的方式有两种:

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);
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php function string input list