首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PHP中克隆对象数组?

如何在PHP中克隆对象数组?
EN

Stack Overflow用户
提问于 2011-06-21 07:59:57
回答 12查看 82.7K关注 0票数 66

我有一个对象数组。我知道对象是按"reference“赋值的,数组是按"value”赋值的。但是当我赋值数组时,数组中的每个元素都引用了对象,所以当我修改其中一个数组中的对象时,更改会反映到另一个数组中。

有没有一种简单的方法来克隆一个数组,或者我必须遍历它来克隆每个对象?

EN

回答 12

Stack Overflow用户

发布于 2012-07-17 21:39:38

代码语言:javascript
复制
$array = array_merge(array(), $myArray);
票数 68
EN

Stack Overflow用户

发布于 2011-06-21 08:11:57

您需要克隆对象以避免引用相同的对象。

代码语言:javascript
复制
function array_copy($arr) {
    $newArray = array();
    foreach($arr as $key => $value) {
        if(is_array($value)) $newArray[$key] = array_copy($value);
        else if(is_object($value)) $newArray[$key] = clone $value;
        else $newArray[$key] = $value;
    }
    return $newArray;
}
票数 24
EN

Stack Overflow用户

发布于 2013-10-31 16:52:44

正如AndreKR所建议的,如果您已经知道数组包含对象,那么使用array_map()是最好的方法:

代码语言:javascript
复制
$clone = array_map(function ($object) { return clone $object; }, $array);
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6418903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档