2014-09-04 89 views
11

我想在Symfony2 Controller中迭代ArrayCollection實例,最簡單的方法是什麼?如何在Symfony2 Controller中迭代ArrayCollection控制器

編輯:

我認爲這是可行的像正常的數組中的PHP,但我對這個代碼有錯誤:

foreach ($arrayCollectionInc as $Inc) { 

} 
+0

你忘了,包括你試過什麼 – 2014-09-04 14:26:18

+2

'的foreach($集合作爲$項目){...}' – 2014-09-04 14:28:26

+2

什麼錯誤? 'ArrayCollection'擴展了'Collection',後者又實現了'IteratorAggregate'和'ArrayAccess' --->'foreach'應該是可能的... – 2014-09-04 15:18:56

回答

13

最簡單的方法:

$arr = $arrayCollectionInc->toArray(); 

foreach ($arr as $Inc) { 

} 

工作例如:

$a = new ArrayCollection(); 
$a->add("value1"); 
$a->add("value2"); 

$arr = $a->toArray(); 

foreach ($arr as $a => $value) { 
    echo $a . " : " . $value . "<br />"; 
} 

結果:

0 : value1 
1 : value2 
22

對於那些誰在未來找到這個問題有,我會考慮比公認的答案,這只是ArrayCollection轉換到一個數組一個更好的做法另一種方式。如果你打算只將數組轉換爲數組,爲什麼還要在ArrayCollection這個位置呢?

通過使用getIterator()函數,您可以輕鬆遍歷ArrayCollection而無需將其轉換爲數組。

foreach($arrayCollection->getIterator() as $i => $item) { 
    //do things with $item 
} 
+1

這應該被認爲是最佳實踐。 – Tofandel 2017-06-22 08:55:05