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 に答える