【发布时间】:2021-05-15 08:26:29
【问题描述】:
我有以下代码:
foreach($this->items as $item) {
echobr("a item price: " . $item->price);
$duplicate = $item;
$duplicate->price = 0;
$duplicate->type = "Discount Item";
echobr("b item price: " . $item->price);
echobr("c dup item price: " . $duplicate->price);
// Duplicate new item to cart
$this->AddItem($duplicate);
}
我得到的输出是:
a item price: 10
b item price: 0
c dup item price: 0
因此,出于某种原因,更改临时变量 $duplicate 的价格会更改 $this-items 的价格,但我不知道为什么?我想这样做你需要使用引用变量,例如&$items?
【问题讨论】:
-
您需要克隆对象。这就是它在许多语言中的工作方式,而不仅仅是 PHP。
-
@ÁlvaroGonzález 如何克隆?为什么我不能像普通变量一样复制?所以我是对的,重复只是一个指针或引用变量吗?
-
因为“operator="创建引用,也就是说
$duplicate只是$item的别名 -
@Berto99 但为什么对象会这样,而不是变量?