>>262
他に必要な人がいるかもしれないから、もっと簡単な方法。もう出てるけど。
>>264の方法でも、時刻は増加するから一見問題が無いように見えるけど、
日をまたいだ場合とか、桁が変わる場合を考えると、簡単には出来ない。
はっきりいって、そんなことを気づかない人間が、質問に答えるな、と。。

time()の戻り値、UNIX時間(でいいかな?時刻なんだけど)
$start = どっかから持ってくる;
$left = $start - time;

if ($left >= 60*60*24*3) {
 $buyflag = 0;
} elsif ($left >= 60*60*1) {
 $buyflag = 1;
} else {
 $buyflag = 2;
}

>>304
追記してリバースは、>>178に書いた方法を使えば簡単。
reverseって、配列に読み込むっていう意味じゃなくて、ひっくり返して読む
っていうだけだと思う。が。(そうじゃないと異常にもったいない)

頻繁に先頭に追加が発生するなら、データ構造の設計がおかしい。