PHP深浅拷贝
Posted LLeaves
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP深浅拷贝相关的知识,希望对你有一定的参考价值。
深拷贝:赋值时值完全复制,完全的copy,对其中一个作出改变,不会影响另一个.
浅拷贝:赋值时,引用赋值,相当于取了一个别名。对其中一个修改,会影响另一个.
1.普通变量赋值为深拷贝
<?php
$a=‘me‘;
$b=$a;
echo (‘a: ‘.$a.‘ b:‘.$b);
$b=‘you‘;
echo "
";
echo (‘a: ‘.$a.‘ b:‘.$b);
?>
结果
a: me b:me
a: me b:you
2.普通变量的引用赋值为浅拷贝
<?php
$a=‘me‘;
$b=&$a;
echo (‘a: ‘.$a.‘ b:‘.$b);
$b=‘you‘;
echo "
";
echo (‘a: ‘.$a.‘ b:‘.$b);
?>
结果
a: me b:me
a: you b:you
3.对象的赋值为浅拷贝
<?php
class top{
public $file;
}
$a=new top();
$a->file=‘flag.php‘;
$b=$a;
echo (‘a:‘.$a->file.‘ b: ‘.$b->file);
echo "
";
$b->file=‘index.php‘;
echo (‘a:‘.$a->file.‘ b: ‘.$b->file);
?>
结果
a:flag.php b: flag.php
a:index.php b: index.php
4.对象的clone为深拷贝
<?php
class top{
public $file;
}
$a=new top();
$a->file=‘flag.php‘;
$b=clone $a;
echo (‘a:‘.$a->file.‘ b: ‘.$b->file);
echo "
";
$b->file=‘index.php‘;
echo (‘a:‘.$a->file.‘ b: ‘.$b->file);
?>
结果
a:flag.php b: flag.php
a:flag.php b: index.php
以上是关于PHP深浅拷贝的主要内容,如果未能解决你的问题,请参考以下文章