数组返回错误值laravel

时间:2015-06-17 18:26:55

标签: php arrays ajax class laravel

我做了一个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请帮助

1 个答案:

答案 0 :(得分:2)

这里的问题是$auxImg始终是同一个对象,所以在每个步骤中你修改这个对象并将它附加到数组但是因为$auxImg是一个对象它不是复制。

你应该添加

$auxImg = new stdClass();

$auxImg = clone $auxImg;

(取决于循环前使用的代码)

后:

foreach ($x as $y) {

获得预期结果。