Edit report at https://bugs.php.net/bug.php?id=60926&edit=1
ID: 60926 Comment by: carloschilazo at gmail dot com Reported by: franssen dot roland at gmail dot com Summary: LIFO/FIFO iterator modes for priority queues Status: Open Type: Feature/Change Request Package: SPL related Operating System: Ubuntu PHP Version: 5.4.0RC6 Block user comment: N Private report: N New Comment: I believe this goes against the definition of a priority queue, if you insert them with the same priority then it really does not matter which one comes first... I understand what you are asking, but if you need them like that then you could maybe use another data structure or a mixture, or user different priorities.. Previous Comments: ------------------------------------------------------------------------ [2012-01-29 19:31:07] franssen dot roland at gmail dot com Description: ------------ PHP version is actually PHP5.4RC3 It would be nice to be able to maintain the input order in a SPL priority queue when multiple values share the same priority. E.g. FIFO and LIFO The current "mode" is neither one of these. I guess this is best peformance-wise but sometimes you want to be explicitly, for instance when registering event listeners; you expect them to run in order. Test script: --------------- <?php $queue = new \SplPriorityQueue; $queue->insert('a', 100); $queue->insert('b', 100); $queue->insert('c', 110); $queue->insert('d', 90); foreach($queue as $element) { var_dump($element); echo '<br>'; } echo '<br>'; $queue2 = new \SplPriorityQueue; $queue2->insert('a', 100); $queue2->insert('b', 100); foreach($queue2 as $element) { var_dump($element); echo '<br>'; } Expected result: ---------------- string(1) "c" string(1) "a" string(1) "b" string(1) "d" string(1) "a" string(1) "b" Actual result: -------------- string(1) "c" string(1) "b" string(1) "a" string(1) "d" string(1) "a" string(1) "b" ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=60926&edit=1