2011-03-25 150 views
1

我使用此代码在数组内创建数组。将项目添加到嵌套数组

array_push($lists, $list); 

然后我尝试将项目添加到嵌套的数组:

array_push($lists[$list], $item); 

但得到一个错误:

Warning: array_push() expects parameter 1 to be array, null given in V:\home\..

$list是某个名字,$item是一个对象。

如何解决这个问题?

回答

2

这是因为第一个参数为空。假设你正在使用默认的索引,你可以这样做:

$numItems = array_push($lists,$list);
array_push($lists[$numItems-1],$item)

+0

任何其他解决方案?两个array_push被放置在不同的函数中,并与foreach一起使用。所以我不能以这种方式使用$ numItems。 – James 2011-03-25 01:48:01

+0

如果你不关心索引,你可以使用:'$ list [] = $ item;'然后'$ lists [] = $ list'。但是我不确定你在没有更多信息的情况下试图完成什么。 – 2011-03-25 16:17:50

1

这在$lists末端推$list,并赋予它一个整数键

array_push($lists, $list); 

这试图访问字符串键$lists,这不存在:

$lists[$list] 

所以返回值是null。最后,就好像你没有

array_push(null, $item); 

对于一个解决方案,我们需要知道,如果你是在$lists除了推到它做任何事情。如果你不是,那么:

$pushed_id = array_push($lists, $list) - 1; 
array_push($lists[$pushed_id], $item); 
+0

您的解决方案不能解决问题。我必须将$ item推送到$ lists [$ list]。问题是如何以正确的方式做到这一点。 – James 2011-03-25 01:45:32

+3

@罗马:学会有礼貌。 **你没有给我们carmstrong的回答中的信息,这是必不可少的。**另外,你所要求的是不可能的**给出我们所知道的** *除非*你可以从第一个状态函数到另一个或'$ list'有自己的(或可以添加)一个唯一的ID。我很抱歉没有阅读您的想法,无法在您自己的时间内解决您的问题。 – Jon 2011-03-25 01:51:51