2
我想知道SplPriorityQueue
如何在優先級爲string
或int
時工作。簡單的例子:當優先級不是整數時,SplPriorityQueue如何工作?
$queue = new \SplPriorityQueue();
$queue->insert('b', 5);
$queue->insert('c', 5);
$queue->insert('d', 1);
$queue->insert('a', 10);
$queue->insert('1', 'a');
$queue->insert('2', 'b');
print_r($queue);
輸出:
Array
(
[5] => a
[4] => b
[3] => c
[2] => d
[1] => 2
[0] => 1
)
問題:爲什麼與int
優先項都首先列出(即A B C d)?當優先級爲string
(項目1 2)時,是否認爲b
大於a
?
好的,但如何比較用來插入到隊列時?我不明白爲什麼'a'和'b'的優先級爲0. – gremo 2013-04-06 20:41:32
它用於排序。 '>'比較確定優先級*順序*。實際上,'a'和'b'沒有0的優先級,但仍然是'a'或'b'的優先級,由於上面的比較結果,它恰好小於任何數字。 – 2013-04-07 06:45:19