php函数之引用参数函数
在 php 中默认是按照值传递参数的,而且 函数的参数也属于局部变量,所以即使在函数内部改变参数的值,它并不会改变函数的外部的值。上一节介绍了php中常规参数函数和伪类型参数函数。这一节来谈谈怎么引用参数,当函数为子程序时,调用函数的程序可以称为父程序。父程序直接传递指定的值或变量给函数使用。由于所传递额值或者变量与函数里的数值分别存储于不同的内存区块,所以如果函数对所导入的数值做了任何变动,并不会对父程序直接造成影响。
php引用参数的函数格式说明如下所示:
void funName(array &arg) // 在参数列表中出现使用 &描述的参数
下面通过一个实例来对php引用参数进行说明:
<?php //声明一个函数作为测试 function test($a){ $a = 200; // 函数中改变参数值为200 } $b = 100; // 父程序中声明一个全局变量$b并给一个初始值100 test($b); // 调用test函数 将100传给函数的参数 echo $b; // 输出100 $b的值没变化 ?>
在上面的实例中,调用 test()函数时,将全局变量$b 的值传给 函数 test()。虽然在 test()函数中对变量 $a 指定了新的值200,但是并不能改变函数外变量 $b 的值。 调用 test()函数结束以后,变量 $b输出的值仍为100。如果希望允许函数修改它的参数值,则必须通过引用传递参数。
相对于按值传递模式,并不会将父程序中的指定数值或者目标变量传递给函数,而是把该数值或者变量的内存存储区块相对地址导入函数之中。因此,当该数值在函数中有任何的变动时,会连带对父程序造成影响。如果想要函数的一个参数总是通过引用传递,则在函数定义中,在参数的前面预先加上符号 & 即可。
把前面的实例修改一下:
<?php //声明一个函数作为测试 function test(&$a){ $a = 200; // 函数中改变参数值为200,加使用 & 引用参数$a,外部变量被修改 } $b = 100; // 父程序中声明一个全局变量$b并给一个初始值100 test($b); // 调用test函数 将变量$b的引用传给函数的参数$a echo $b; // 输出200 $b的值在函数中修改变量$a时被修改 ?>
在上面的实例中,调用 test()函数时,不是将全局变量$b 的值传给 函数 test()。可以看到,在test()函数的定义中,使用了引用符号 & 指定变量$a 为按引用传递方式。在函数体中对变量$a 指定了新的值200,由于按引用方式会修改外部数据,所以外部变量$b 的值也一起被修改。函数调用结束以后,可以看到变量$b 的输出值为200。
注意:如果在函数的形参中有使用 & 修饰参数。则在调用该函数时就必须传入一个变量给这个参数,而不能传递一个值。
【相关教程推荐】
3. php实战视频教程
以上就是php函数之引用参数函数的详细内容,更多请关注其它相关文章!
上一篇: 如何声明及应用各种形式的php函数
下一篇: 问一个文件上传保存格式问题?
推荐阅读
-
【转】超实用PHP函数总结整理,实用php函数总结_PHP教程
-
PHP避免重复申明函数的解决方案_PHP
-
自定义PHP分页函数
-
php中随机函数mt_rand()与rand()性能对比分析_PHP
-
编写一个函数 reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
-
一个目录遍历函数_PHP
-
编写一个函数reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数
-
PHP eval函数
-
php中get_magic_quotes_gpc()函数说明
-
在PHP3中实现SESSION的功能(附、COOKIE函数库的使用:test_cookie.php3