数组返回错误值 laravel
Posted
技术标签:
【中文标题】数组返回错误值 laravel【英文标题】:array return wrong value laravel 【发布时间】:2015-09-03 03:44:59 【问题描述】:我发出一个 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】:这里的问题是$auxImg
始终是同一个对象,因此在每一步中您都修改此对象并将其附加到数组中,但是因为$auxImg
是一个对象,所以它没有被复制。
你应该添加
$auxImg = new stdClass();
或
$auxImg = clone $auxImg;
(取决于您在循环之前使用的代码)
之后:
foreach ($x as $y)
得到预期的结果。
【讨论】:
谢谢它确实有效,但我仍然不明白为什么它在循环和外部显示不同的值? 这是因为 php 中的对象没有被复制,所以在循环中当你赋值时你会看到这个值,但在循环之后你会看到相同的值。您可以将其与以下内容进行比较:$x = new stdClass(); $x->a = 5; echo $x->a; $y = $x; $y->a = 10; echo $y->a; echo $x->a;
当您要复制对象时,您需要使用 clone
以上是关于数组返回错误值 laravel的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试从 PHP 对象/数组返回值时,出现 500 错误。但是可以返回所有对象