2016-08-15 63 views
1

我最近一直有一些問題與陣列上執行array_filter後打印我的mongoID從一個數組:PHP不濾鏡陣列之後,從陣列式打印MongoID

$array = array_filter($array); 
    $array = array_slice($array, 0, 3, true); 

這曾經是罰款和工作沒有的array_filter,現在該數組包含:

Array ([3] => MongoId Object ([$id] => 57b0facace2350981c000029) [4] => MongoId Object ([$id] => 57b0fafcce2350981c00002b)) 

但是打印出ID現在發生故障或不循環:

$length = count($array); 
    for ($i = 0; $i < $length; $i++) { 
    $id = $array[$i]->{'$id'}; 
    echo $id; 
    } 

再次,這一切都用於工作,但過濾後刪除空元素,但現在似乎不正確迭代數組,但這可能是另一個問題。任何幫助解決這個問題將不勝感激。

+0

看那然後看看你的for循環以及你在那裏做了什麼:P – Rizier123

+0

你的意思是因爲我的密鑰在過濾後從3開始?所以我應該找到一種方法來循環它的每個項目,而不是使用數組的長度?確切地說,是 – D3181

+1

。因爲你在'array_slice()'中保存了鍵值,它們仍然以3開頭:)所以你可以使用foreach循環或者用'array_keys()'從數組中獲得鍵值,然後訪問帶有計數器變量的鍵for循環和數組索引的鍵。 – Rizier123

回答

1

錯誤的原因是在使用array_filter刪除空元素之後由於array_slice而導致數組中鍵的保留。這意味着使用數組長度來遍歷它不工作,而是被要求foreach循環,以確保它會遍歷數組中的所有元素:

foreach ($array as &$value) 
{ 
} 

感謝@ Rizier123