1
下面顯示SplPriorityQueue給出最大優先級值的最高優先級,在這種情況下,最大優先級值對應於最新日期。SplPriorityQueue按升序排列
$q=new SplPriorityQueue();
foreach(range(1,5) as $i){
$s='2011-03-' . (1+$i);
$d=date_create($s);
echo $i, ' ', $d->format('Y-m-d'),'<br/>';
$q->insert($i,$d);
}
/*
1 2011-03-02
2 2011-03-03
3 2011-03-04
4 2011-03-05
5 2011-03-06
*/
foreach($q as $i){
echo "$i ";
}
//5 4 3 2 1
指定的日期爲優先的任意一組,一個是怎樣導致SplPriorityQueue的內容出來的上升而非降序排列?
ETA: 我有一種使用Unix時間戳的方式。但是這在Unix時代之外失敗了。
$q=new SplPriorityQueue();
foreach(range(1,5) as $i){
$s='2011-03-' . (1+$i);
$d=date_create($s);
$u=$d->format('U');
echo $i, ' ', $d->format('Y-m-d'), ' ',-$u,'<br/>';
$q->insert($i,-$u);
}
/*
1 2011-03-02 -1299038400
2 2011-03-03 -1299124800
3 2011-03-04 -1299211200
4 2011-03-05 -1299297600
5 2011-03-06 -1299384000
*/
foreach($q as $i){
echo "$i ";
}
//1 2 3 4 5
有沒有更強大的方法?
這絕對是比Unix時代更好的範圍。出於實際的目的,它解決了這個問題。我想我只需要忍受自己對實例化SplPriorityQueue時無法設置排序順序以升序或降序的事實的不滿。 – dnagirl 2011-03-03 14:10:49
使用'PHP_MAX_INT'而不是99999999 – 2016-12-01 17:21:35
PHP_INT_MAX在32位和64位上不同。也。我建議99999999,因爲它與yyyymmdd的位數相同,並且結果仍然會與原始文件 – 2016-12-31 11:08:04