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

Reply via email to