Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对象被推送到数组中_Php_Arrays_Object - Fatal编程技术网

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
每次都会改变,还是相同?是相同的对象