我通过复制第一个元素向数组添加元素。然后我只改变第一个元素[0]的某些属性 - 但是(由于某种原因我不明白)所有元素的属性(例如[1])不仅改变了元素也被改变了。
代码:
$this->product->images[] = $this->product->images[0];
$file = uniqid().'.png';
$this->product->images[0]->file_url = 'images/magick/'.$file;
当我只想更改第一个([0])元素时,此代码也会将$ this-&gt; product-&gt; images [1] - &gt; file_url更改为'images / magick /'.$文件。< / p>
答案 0 :(得分:0)
这是因为$images
中的项目是对象(请参阅Objects and references)。所以你必须使用:
$this->product->images[] = clone $this->product->images[0];
但请注意,我不知道您正在使用的类,因此在某些情况下您可能需要深度克隆,克隆也可能取决于您的对象(请参阅Object Cloning)。
答案 1 :(得分:0)
检查一下:
$this->product->images[] = clone $this->product->images[0];
$file = uniqid().'.png';
$this->product->images[0]->file_url = 'images/magick/'.$file;