Php foreach返回的元素多于count()

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 我删除了几个要素

我使用的是Symfony 1.2.7和Doctrine 1.1。我有
$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集合是只读的,因此我无法删除元素(尽管它的计数器以不同的方式工作)。我现在要做的是将元素添加到另一个数组中,然后取消设置()我不需要的元素。谢谢