问:“如何在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 对象。
- 数组
- 深拷贝
- 数组操作
- 交/并/合
- 差值
- 搜索
- 排序
- 货币
- 字符串
- 补全
- heredoc
- session
- 注销
- 限时自动注销
- 日期时间
- 日期时间
- 某月首尾
- 格式判断
- 年龄计算
- 时间函数
- strtotime
- 版本升级
- $HTTP_RAW_POST_DATA
- 正则函数等
- 版本比较
- php5.3 PHP5.4 PHP5.5 php5.6 新特性
- PHP注释
- URL地址
- 页面超时
- 类方法
- 静态方法
- 子类静态方法
- 普通方法和静态方法
- call_user_func 和 call_user_func_array
- 函数
- 动态函数
- 数组循环
- Math函数
- 取整
- 除数余数
- 运行模式
- CLI 模式
- 常用CLI命令
- 检测环境支持php_cli模式?
- 调试
- 调试工具
- FirePHP
- ChromePHP
- 内置服务器
- 500 错误处理
- 命令行
- 远程操作
- HTTP
- HTTP headers
- 用例
- 保留字
- 教程
- PHP实战教程-0基础快速入门
- 接口与抽象类
- 抽象类与接口的区别
- 魔术方法
- 私有属性方法
- 构造/析构方法
- PHP Error 和 Logging 函数
- 类
- const