PHP foreach SplPriorityQueue - 找不到元素

时间:2011-12-27 16:35:18

标签: php foreach priority-queue

我有以下代码:

    $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移除元素?

谢谢!

1 个答案:

答案 0 :(得分:3)

您无法阻止循环使元素出列,因为这是数据结构的本质。但是,您可以在循环之前创建对象的副本,这样您的数据就不会丢失:

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