开发者学堂课程【PHP 基础入门课程(下):参数传值方式】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/710/detail/12628
参数传值方式
1、目标:
了解参数传值方式的区别和应用
2、概念
参数传值方式:在函数调用时,实参给形参传值时所采用的传值方式
(1)参数传值方式在函数定义时规定 实际传值的落点
(2)参数传值方式有两种:
值传递:默认,即外部数据,如 function a($b)值是否改变无关系。
引用传递:使用&符号,即传递外部变量存储数据的内存地址,如 function a(&$b)
3、步骤
(1)确定函数参数的目的
外部传入数据内部运算,不影响外部:值传递 此较多使用。
外部传入数据内部运算,同时外部也受影响:引用传递
(2)传递实参时要确定形参的传值方式
值传递:数据常量、变量、常量、运算表达式都可以(能有数据都可以)
引用传递:变量
4、示例
#值传递:输出一个指定数到1之间的整数
function display1($n){
while($n > 1){
echo_$n--;
#当前$n 最终会等于0(正常正数传入)
}
}
$a = 3;
display1($a);
#输出3,2,1
display1(2);
#输出2,1
echo $a;
#3,没有变化
此种方式为值传递,前面可以传数据,变量,任何带数据的东西。
代码
<?php
#参数传值方式
#值传递
function display1($n){
while($n > 1){
echo $n--,'<br/>';
}
}
运行代码,没有问题。
调用直接传值第一种方法,传数据就可以
display(4);
运行结果:
第二种定义变量,传变量进去,常量也可以传,只要带数据就可以。
$n=5;
display($n);
运行结果:
方案2
echo '<hr/>';
#引用传递
function display2(&$n){
while($n > 1){
echo $n--,'<br/>';
}
}
display2(3);
#错误:数值常量不能用于引用传值
运行,出现错误。
语法编译出现错误,数值常量,不能用于引用。
$n=9
display2($n);
刷新运行正常,此时这是本身在传值时的区别。
当前面用了变量传值之后,
在display(4);
$n=5;
display($n);
位置添加 echo $n
;运行,发现n原来是5输出还是5。
而接着输出 echo $n
;时运行结果为1,n 最终为1,内部的改变也影响到外部,所以这是引用传值和普通的传递的区别。第一能传的数据有区别,第二传进去之后内部的改变跟外部也会有影响。
5、小结
(1)参数传值方式是指实参传入到形参后,内部的改变是否对外部有影响
值传递:传递数值,内部修改不影响外部(所以外部只要是能得到数据的方式都可以做实参)
引用传递:传递数据的内存地址,内部修改影响外部(所以只能传递变量)