2011-12-27 16 views
3

我有以下代码:PHP的foreach SplPriorityQueue - 找不到元素

$friendsOrdered= new SplPriorityQueue(); 
    ... // Code to fill up the priority queue 
    print_r($friendsOrdered); 
    $i = 0; 
    foreach($friendsOrdered as $f) { 
    } 
    echo "<br><br>"; 
    print_r($friendsOrdered); 

当我看打印的输出,我可以看到,在循环后的优先级队列为空。有没有办法阻止移除元素的foreach?

谢谢!

回答

3

您不能停止从出列元素的循环,因为这是数据结构的性质。但是,您可以在循环之前创建对象的副本,以免数据丢失:

$friendsOrdered_copy = clone $friendsOrdered; 
foreach($friendsOrdered_copy as $f) { 
    // ... 
} 
+3

或更好的迭代克隆。 – hakre 2011-12-27 16:57:45