码迷,mamicode.com
首页 > 编程语言 > 详细

PHP数组的深拷贝和引用赋值

时间:2018-01-10 11:23:24      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:print   info   技术   color   php数组   空格   post   数组   com   

 

一、当PHP数组变量$arr赋值给另一个变量$one时,此时是把数组变量$arr整个复制一份给$one,即使$arr是多维数组。

例:

$arr = array(1, 2, 3, array(‘one‘, ‘two‘));
$one = $arr;
# 输出原数组$arr print_r($arr);  # Array ( [0] => 1 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => two ) )

# 输出新数组$one
print_r($one);  # Array ( [0] => 1 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => two ) )

# 修改原数组$arr,并输出 $arr[0] = 4; $arr[3][1] = ‘three‘; print_r($arr);  # Array ( [0] => 4 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => three ) )

# 输出新数组$one print_r($one);  # Array ( [0] => 1 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => two ) )
从例子可以看出,修改原数组的值并没有影响新数组

二、当PHP数组变量$arr使用引用赋值给另一个变量$one时,此时数组变量$arr 并没有 整个复制一份给$one,而是把数组的引用赋给$one,即两个变量指向同一个数组
例:
$arr = array(1, 2, 3, array(‘one‘, ‘two‘));
$one = &$arr;

# 输出原数组$arr
print_r($arr);  # Array ( [0] => 1 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => two ) ) 

# 输出新数组$one
print_r($one);  # Array ( [0] => 1 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => two ) ) 


# 修改原数组$arr,并输出
$arr[0] = 4;  
$arr[3][1] = ‘three‘;
print_r($arr);  # Array ( [0] => 4 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => three ) ) 


# 输出新数组$one
print_r($one);  # Array ( [0] => 4 [1] => 2 [2] => 3 [3] => Array ( [0] => one [1] => three ) ) 
从例子可以看出,修改了原数组的值,同时新数组值也改变了。

上面的代码,是在写博客时直接写进来的,如果直接复制粘贴到sublime text3里面,执行会报错。

技术分享图片

疑惑半天,才发现是代码格式有空格的原因。可能因为是用此博客插件直接编写的吧。在sublime text3里面修改格式后运行正常。




PHP数组的深拷贝和引用赋值

标签:print   info   技术   color   php数组   空格   post   数组   com   

原文地址:https://www.cnblogs.com/BluePegasus/p/8257077.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!