Php 对象被推送到数组中
我有一件奇怪的事情,可能很简单,但我找不到解决办法。以下是代码的一部分:Php 对象被推送到数组中,php,arrays,object,Php,Arrays,Object,我有一件奇怪的事情,可能很简单,但我找不到解决办法。以下是代码的一部分: $counter = 0; $autoload_view_instace = new Logic_InvoiceCostData; $sub_view_cost = array(); foreach($invoceCostData as $data) { $counter++; $parm = $autoload_view_instace->edit_view_data($autoload_view
$counter = 0;
$autoload_view_instace = new Logic_InvoiceCostData;
$sub_view_cost = array();
foreach($invoceCostData as $data)
{
$counter++;
$parm = $autoload_view_instace->edit_view_data($autoload_view, $data, $counter);
array_push( $sub_view_cost, $parm);
}
循环调用
edit\u view\u data
方法,该方法返回具有某些值的对象。在每次迭代中,应将该对象放置在数组的末尾,而不更改先前添加的对象的值。但是在每次迭代之后,数组中的所有对象都与新添加的对象具有相同的值。显然,数组的push语法是正确的。。而且它应该会起作用。。但是,您可以使用。
$sub_view_cost[]=$parm
并确保每次$parm获得正确的值尝试$sub_view_cost[]=$parm;相反,看看它是否有效。但是,在php手册中建议注意:如果使用array_push()向数组中添加一个元素,最好使用$array[]=因为这样就不会有调用函数的开销。检查该方法中的每个变量,它似乎可以返回我想要的。尝试在
foreach
循环结束时将unset($parm)
作为unset($parm)
取消设置,可能每次edit\u view\u data
返回的对象都是同一个对象,并且您无意中多次修改了一个实例。每次尝试var\u dump($parm)
;第一行应该是object(className)#123
或类似的-是#123
每次都会改变,还是相同?是相同的对象