PHP按值传递和引用传递学习
按值传递:
正常的赋值,相对与复制,变量已最后一次赋值为准。
$a = "test";
$b = $a;
$a = "newtest";
echo $a; //输出newtest
echo $b; //输出test
--或者
$a = "test";
$b = $a;
$b = "newtest";
echo $a; //输出test
echo $b; //输出newtest
引用传递:
被赋值的变量指向原始变量,一变则变,(跟着变、共同体),在原始变量加&。
$a = 'test';
$b = &$a; //引用赋值,$a、$b指向同一空间,两者相对与一个共同体
$b = 'newtest'; //$b 变则 $a跟着变
echo $a; //输出 newtest
echo $b; //输出 newtest
引用传递(函数):
函数内变量改变,函数外跟着变
$a = 'test';
function fun(&$var){ //$var 引用$a; 两者共同体
$var = "newtest"; //$var改变则$a跟着改变
}
fun($a);
echo $a; //输出newtest
Copy 优缺点:
按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。
按引用传递则不需要复制值,对于性能提高很有好处。