Php foreach返回的元素多于count()
我使用的是Symfony 1.2.7和Doctrine 1.1。我有Php foreach返回的元素多于count(),php,symfony1,doctrine,iterator,Php,Symfony1,Doctrine,Iterator,我使用的是Symfony 1.2.7和Doctrine 1.1。我有$activities(sfoutputsecasheriterator-ecorator-Doctrine\u Collection)。我正在使用ESC_SPECIALCHARS方法对settings.yml上的所有内容进行转义。如果我没有转义它,它将毫无问题地工作,因此我认为问题与sfoutputsecaskeriterator或ecorator有关 如果我进行回声计数($activities)它将返回我5 我删除了几个要素
$activities(sfoutputsecasheriterator-ecorator-Doctrine\u Collection)
。我正在使用ESC_SPECIALCHARS方法对settings.yml上的所有内容进行转义。如果我没有转义它,它将毫无问题地工作,因此我认为问题与sfoutputsecaskeriterator或ecorator
有关
如果我进行回声计数($activities)它将返回我5
我删除了几个要素:
foreach($activities as $key => $a){
if(...){
$activities->remove($key);
}
}
foreach($activities as $activity){
..
}
然后,如果我进行回声计数($activities)它将返回我2
但是,当我遍历元素时,仍然有相同的5个元素:
foreach($activities as $key => $a){
if(...){
$activities->remove($key);
}
}
foreach($activities as $activity){
..
}
有什么想法吗
谢谢 试试这个:
foreach($activities as $key => $a){
if(...){
unset($activitie[$key]);
}
}
还有array_splice()虽然从技术上讲这不是答案,但它启发了我采取新的方法。似乎SFOutputEscaperatorDecorator集合是只读的,因此我无法删除元素(尽管它的计数器以不同的方式工作)。我现在要做的是将元素添加到另一个数组中,然后取消设置()我不需要的元素。谢谢