我做了一个ajax请求,响应是一个图像数组,问题是我回显了数组的值及其我想要的那个,但是当foreach结束时,我看到数组的每个值是什么它被数组的最后一项改变了
foreach ($x as $y) {
$auxImg->misc_id = $y->misc_id;
$auxImg->image = $y->image;
$aux[$i] = $auxImg;
echo $aux[$i]->image.' ';
//response of the array in the echo
/* 5/maqueta.png - 5/ponto.png - 5/ciades.jpg - 5/35235.jpg */
$i++;
}
echo var_dump($aux);
//response in the var_dump of the aux array
array(4) {
[0]=>
object(stdClass)#400 (2) {
["misc_id"]=>
int(9)
["image"]=>
string(11) "5/35235.jpg"
}
[1]=>
object(stdClass)#400 (2) {
["misc_id"]=>
int(9)
["image"]=>
string(11) "5/35235.jpg"
}
[2]=>
object(stdClass)#400 (2) {
["misc_id"]=>
int(9)
["image"]=>
string(11) "5/35235.jpg"
}
[3]=>
object(stdClass)#400 (2) {
["misc_id"]=>
int(9)
["image"]=>
string(11) "5/35235.jpg"
}
}
我真的不明白为什么会发生这种情况,这是我唯一一次使用$ aux var请帮助
答案 0 :(得分:2)
这里的问题是$auxImg
始终是同一个对象,所以在每个步骤中你修改这个对象并将它附加到数组但是因为$auxImg
是一个对象它不是复制。
你应该添加
$auxImg = new stdClass();
或
$auxImg = clone $auxImg;
(取决于循环前使用的代码)
后:
foreach ($x as $y) {
获得预期结果。