PHP 值传递 引用传递
- JS中数组是引用传递
- PHP资源和对象等数据类型是引用传递,其数据类型是值传递(包括数组)
- 栈内存(快速内存)中存放标量数据类型,复合数据类型的变量名和数据地址
对象引用传递
$obj = new stdClass;
$obj->id = 1;
$new = $obj;
$new->id = 2;
var_dump($obj->id); // 2
var_dump($new->id); // 2
对象参数引用传递
function test($obj){
$obj->id = 2;
}
$obj = new stdClass;
$obj->id = 1;
test($obj);
var_dump($obj->id); // 2
值传递
$a = 1;
$b = $a;
$b = 2;
var_dump($a); // 1
var_dump($b); // 2
循环时引用带来的问题
循环时候由于前后两个循环的变量名字一样,第一个循环时候,实际上是数组中每个元素的值被作为引用传递过去,第二个循环时候,$value这个变量引用的是数组最后一个值,这样最后那个值实际上一直在跟着循环变化$arr = [ 1,2,3 ]; for($arr as &$value){ } for($arr as $value){ // var_dump($arr); } var_dump($arr); // 1 2 2
解决方法
把第二个循环也改成引用
最后更新于 2020-03-16 03:40:38 并被添加「PHP 值传递 引用传递」标签,已有 687 位童鞋阅读过。
此处评论已关闭