设置数组的属性

时间:2013-03-23 22:36:05

标签: php arrays object

我通过复制第一个元素向数组添加元素。然后我只改变第一个元素[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>

2 个答案:

答案 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;