我有以下代码:
$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移除元素?
谢谢!
答案 0 :(得分:3)
您无法阻止循环使元素出列,因为这是数据结构的本质。但是,您可以在循环之前创建对象的副本,这样您的数据就不会丢失:
$friendsOrdered_copy = clone $friendsOrdered;
foreach($friendsOrdered_copy as $f) {
// ...
}