之前几篇文章详细介绍了php函数,对php函数不了解的可以看看我前几天发的文章,php函数由函数名、函数参数、函数体、return返回值组成,在函数调用过程中,被调用函数和执行程序通过函数参数进行数据传输,这篇文章为大家介绍一下函数中参数是通过哪些方式传递的?
参数传递其实就是在执行函数前导入某些值,供函数处理执行。php函数中传递参数的方式主要有按值传递参数和按引用传递参数,另外php函数还支持默认参数列表的传递方式。
按值传递参数
参数列表可以传递数据到函数,逗号分隔表达式,再php中默认是按值传递参数的,函数成为子程序,调用函数的程序成为父程序。父程序直接传递指定的值或是变量给函数使用,传递的值存于不同的内存区块,子程序对导入的数据做任何修改都不会对父程序有任何直接影响。
如上图所示,$a是函数test的形参,$b是函数test的实参,调用函数test($b)不会影响到$b的值,$b初始值仍为200.
按引用传递参数
默认情况下函数内部改变参数的值,并不会改变函数外部的值,如果我们想允许函数修改它的参数值从而改变函数外部的值,这时候必须通过引用传递参数。使用引用传递参数后,参数值的改变会连带对父程序造成影响。使用按引用传递参数需要在参数前加上符号“&”即可。如图所示:
调用test函数时,因为使用的是按引用传递参数原因,$b的值是100而不是200。
函数的默认参数
定义函数时声明了参数,在调用函数没有参数,就会出现警告。在php中,支持函数的默认方式调用,即为参数指定一个默认值。再调用函数时没有指定参数的值,在函数中会使用参数的默认值。默认值必须是常量表达式不是变量,类成员或者函数调用,php还允许使用数组和特殊类型null作为默认参数。如图所示:
运行结果
person();使用了函数的默认参数,person(“张三”)覆盖了$name的值,使用了函数默认参数$age的值,而person(“张三”,30)没有使用函数的默认参数值。
以上是关于php函数参数值传递的内容,如果大家有更好的想法可以相互讨论下!
领取专属 10元无门槛券
私享最新 技术干货