2014-09-04 5 views
11

Chcę iterować instancję ArrayCollection w kontrolerach Symfony2, jaki jest najprostszy sposób?jak iterować ArrayCollection w kontrolerze symfony2

edit:

myślałem, że to działa jak normalny tablicy w php, ale mam błąd na ten kod:

foreach ($arrayCollectionInc as $Inc) { 

} 
+0

zapomniałeś to co próbowałem –

+2

'foreach ($ kolekcję as $ item) {...}' –

+2

Jaki był błąd? 'ArrayCollection' rozszerza' Collection', który z kolei implementuje 'IteratorAggregate' oraz' ArrayAccess' ---> 'foreach' powinno być możliwe ... –

Odpowiedz

13

Najprostszy sposób:

$arr = $arrayCollectionInc->toArray(); 

foreach ($arr as $Inc) { 

} 

przykład robocza:

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

$arr = $a->toArray(); 

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

Wynik:

0 : value1 
1 : value2 
22

Dla tych, którzy uważają tę kwestię w przyszłości istnieje inny sposób, który uważam za lepszy niż przyjętą praktyką odpowiedź, która po prostu zamienia ArrayCollection do tablicy. Jeśli zamierzasz przekonwertować do tablicy, po co zawracać sobie głowę ArrayCollection?

Możesz łatwo przełączyć się na ArrayCollection, nie konwertując go do tablicy za pomocą funkcji getIterator().

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

Należy to uznać za najlepszą praktykę. – Tofandel