php - 是否有将 PHP 数组复制到另一个数组的功能?

是否有将 PHP 数组复制到另一个数组的函数?

我曾多次尝试复制 PHP 数组。我想将对象内部定义的数组复制到对象外部的全局对象中。

最佳答案

在 PHP 中,除了对象之外的所有变量都是通过写时复制的机制分配的,而对象是通过引用分配的。这意味着对于具有标量值的数组,$b = $a 已经会给你一个副本:

$a = array();
$b = $a;
$b['foo'] = 42;
var_dump($a);

将产生:

array(0) {
}

而对于对象,

$a = new StdClass();
$b = $a;
$b->foo = 42;
var_dump($a);

产量:

object(stdClass)#1 (1) {
  ["foo"]=>
  int(42)
}

在 another answer 中解释了数组元素也可能是需要克隆的对象的极端情况。

您可能会被 ArrayObject 等错综复杂的东西弄糊涂。 ,它是一个与数组完全一样的对象。然而,作为一个对象,它具有引用语义。

编辑:@AndrewLarsson 在下面的评论中提出了一个观点。 PHP 有一个特殊的特性叫做“引用”。它们有点类似于 C/C++ 等语言中的指针,但并不完全相同。如果您的数组包含引用,那么当数组本身通过副本传递时,引用仍将解析为原始目标。这当然是通常所期望的行为,但我认为值得一提。

https://stackoverflow.com/questions/1532618/

相关文章:

php - 新 self 与新静态

php - 按一个属性对对象数组进行排序

php - 在 PHP 中的任意位置插入数组中的新项目

php - PHP 中的 NOW() 函数

php - 如何在 PHP 中执行静态代码分析?

php - 不能在写上下文中使用方法返回值

php - 在 PHP 中将整数转换为字符串

php - 更改最大上传文件大小

php - 如何在 PHP 中向空数组添加元素?

php - 如何在 PHP 中获取字符串的最后一个字符?