🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
问:“如何在php中实现数组的深拷贝?而不简单的把数组的值复制到另一个数组中。” 深拷贝是面向对象编程的一个很重要的概念,它说的是,把一个数组或者对象拷贝给另外一个,这种拷贝不仅仅是把数组A的值赋值给了数组B,而是数组A和数组B指向了同一个空间,也就是,B就是A的别名。在PHP中如何实现这种拷贝呢? 下面写一个简单的拷贝代码: ~~~ $a = array(); $b = $a; $b['foo'] = 42; var_dump($a); ~~~ 当我们运行这段代码时,得到: ~~~ array(0) { } ~~~ 可见,我们修改了B的值,但是A却没有相应的改变。于是我们更新代码: ~~~ $a = new StdClass(); $b = $a; $b->foo = 42; var_dump($a); ~~~ 此次的输出结果变成了: ~~~ object(stdClass)#1 (1) { ["foo"]=> int(42) } ~~~ 可见,如果我们需要在php中实现深拷贝,需要借助于对象,所以,深拷贝一个数组需要 ArrayObject 对象。