0

我通过复制第一个元素将元素添加到数组中。然后我只更改第一个元素 [0] 的某些属性 - 但是(由于某种原因我不明白)所有元素(例如 [1])的属性,而不仅仅是更改的元素也发生了更改。

编码:

$this->product->images[] = $this->product->images[0];
$file = uniqid().'.png';
$this->product->images[0]->file_url = 'images/magick/'.$file;

当我只想更改第一个 ([0]) 元素时,此代码还将 $this->product->images[1]->file_url 更改为 'images/magick/'.$file 。

4

2 回答 2

0

这是因为其中的项目$images是对象(请参阅对象和引用)。所以你必须使用:

$this->product->images[] = clone $this->product->images[0];

但请注意,我不知道您正在使用的类,因此在某些情况下您可能需要深度克隆,而且克隆可能取决于您的对象(请参阅对象克隆)。

于 2013-03-23T22:39:39.970 回答
0

检查这个:

$this->product->images[] = clone $this->product->images[0];
$file = uniqid().'.png';
$this->product->images[0]->file_url = 'images/magick/'.$file;
于 2013-03-23T22:40:03.897 回答