跟随我在oracle学习php(29)

参数的数量问题

1,函数的参数的数量可以是0个或多个——具体多少个,不是语法问题,而是应用问题。

2,通常,实际参数的数量应该跟形式参是的数量一致。

3,但是,在2的基础上,如果形式参是中有默认值,则实际参数的对应项可以省略。

即:实参的个数,至少应该不少于形参中的非默认值参数的个数。

 

但:

我们还有一种特殊的处理函数参数的用法:*参数数量

定义时可以不给定形参,但调用时,却又可以给定任何个数的实参。

在系统中,var_dump()这个函数也有同样的使用效果:

var_dump($v1);

var_dump($v1, $v2, $v3); //也可以

这种应用的实现,是依赖与系统中的3个系统函数来达到的:

func_get_args(); //获得一个函数所接收到的所有实参数据,并结果是一个数组

func_get_arg(n); //获得一个函数所接收到的第n个实参数据(n0开始)

func_num_args(); //获得一个函数所接收到的所有实参数据的个数

 跟随我在oracle学习php(29)

 

结果:跟随我在oracle学习php(29)

 

函数的返回值

通常来说,一个函数中,使用return语句,并其后带一个数据(直接数据,变量数据,表达式结果数据)

则该函数就会返回该数据到“调用的位置”:

 跟随我在oracle学习php(29)

 

通常情况下,函数返回的数据都是以“值传递”的形式返回:函数中的变量的值“拷贝”一份,然后返回给接收的位置的相应代码(赋值,输出,计算)。

但:

我们也可以让函数中的变量数据的值,以“引用传递”的方式返回:

形式如下:

定义函数:

function  &函数名(形参1,形参2.....) //注意函数名前有个引用符号“&

{

$result = 0; //初始化

。。。。。。。

return $result; //此时返回数据,只能是变量

}

调用函数:

$v1 =  &函数名(实参1,实参2....; //引用返回的函数,自然是指有返回值。

 跟随我在oracle学习php(29)

 

函数的其他形式

1可变函数

可变函数,就是函数名“可变”——其实跟可变变量一样的道理。

$str1 = “f1”; //只是一个字符串,内容为”f1”

$v1 = $str1(3, 4); //形式上看起来是一个变量后面加上括号,则其本质是该变量的“内容”(f1)后面加括号,即这里是调用函数f1(3, 4);

 跟随我在oracle学习php(29)

 

实际应用中,常常是需要根据“用户给定”的数据,来决定调用哪个函数,比如:

function  jpg(){处理jpg}

function  png(){处理png}

function  gif(){处理gif}

$fileName = get_fileName(){获取用户上传的图片名};

$houzhui = get_houzhui($fileName);

$houzhui();

2匿名函数

匿名函数就是没有名字的函数,其有两种表现形式:

表现1

$f1 =  function(){。。。函数体;}

//这里的匿名函数定义形式上没有名字,但其实又将之赋值给了变量$f1

使用时,就跟“可变函数”一样了:$v1 = $f1();

 跟随我在oracle学习php(29)

 

表现形式2

调用其他函数2(匿名函数,实参1,实参2...... );

说明:

1此形式的匿名函数只有定义的函数体(无函数名)

2此形式的匿名函数只能作为其他函数调用时的参数(其他函数通常有特定用处)

3此匿名函数会在调用其他函数的“过程中”被执行。

能够使用(匿名)函数当作实参的函数,并不多!

其中有一个常见的是:call_user_func_array();

其使用形式为:

call_user_func_array(匿名函数,数组);

含义:

将数组的每一项当作该匿名函数的若干个实参,传递到该匿名函数中,并执行该匿名函数,并可以从该匿名函数中返回数据。

 跟随我在oracle学习php(29)

 

 跟随我在oracle学习php(29)