2011-03-25 148 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