2014-09-04 27 views
11

Voglio ripetere l'istanza ArrayCollection nel controller Symfony2, qual è il modo più semplice?come iterare ArrayCollection in symfony2 Controller

edit:

ho pensato che avrebbe funzionato come serie normale in php ma ho ottenuto l'errore su questo codice:

foreach ($arrayCollectionInc as $Inc) { 

} 
+0

si è dimenticato di includere quello che hai provato –

+2

'foreach ($ raccolta da $ item) {...}' –

+2

Qual è stato un errore? 'ArrayCollection' estende' Collection' che a sua volta implementa 'IteratorAggregate' e' ArrayAccess' ---> 'foreach' dovrebbe essere possibile ... –

risposta

13

modo più semplice:

$arr = $arrayCollectionInc->toArray(); 

foreach ($arr as $Inc) { 

} 

esempio di lavoro:

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

$arr = $a->toArray(); 

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

Risultato:

0 : value1 
1 : value2 
22

Per coloro che trovano questa domanda in futuro c'è un altro modo che io considero essere una pratica migliore rispetto alla risposta accettata, che ha appena converte il ArrayCollection a un array. Se hai intenzione di convertire solo in un array perché preoccuparsi con il ArrayCollection in primo luogo?

È possibile eseguire facilmente il loop su uno ArrayCollection senza convertirlo in un array utilizzando la funzione getIterator().

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

Questa dovrebbe essere considerata la migliore pratica. – Tofandel

Problemi correlati