如何在symfony2 Controller中迭代ArrayCollection

moh*_*Jsh 13 php symfony doctrine-orm

我想ArrayCollection在Symfony2 Controller中迭代实例,最简单的方法是什么?

编辑:

我认为它会像PHP中的普通数组一样工作,但我在这段代码上有错误:

foreach ($arrayCollectionInc as $Inc) {

}
Run Code Online (Sandbox Code Playgroud)

Chi*_*ean 35

对于那些在将来发现这个问题的人,我认为有另一种方式比接受的答案更好的做法,它只是将数据转换ArrayCollection为数组.如果您要转换为数组,为什么还要ArrayCollection先打扰?

您可以ArrayCollection使用该getIterator()函数轻松地循环遍历而不将其转换为数组.

foreach($arrayCollection->getIterator() as $i => $item) {
    //do things with $item
}
Run Code Online (Sandbox Code Playgroud)

  • 到底为什么 ArrayCollection实现IteratorAggregate。你应该只为数组集合 (4认同)
  • 这应被视为最佳做法. (2认同)

isw*_*nky 12

最简单的方法:

$arr = $arrayCollectionInc->toArray();

foreach ($arr as $Inc) {

}
Run Code Online (Sandbox Code Playgroud)

工作范例:

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

$arr = $a->toArray();

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

结果:

0 : value1
1 : value2
Run Code Online (Sandbox Code Playgroud)


use*_*531 5

绝对同意不应转换为数组,但是,->getIterator()没有必要。

foreach($arrayCollection as $i => $item) {
    //do things with $item
}
Run Code Online (Sandbox Code Playgroud)