• ベストアンサー

10分ごとに変化するプログラムについて

変数が $a $b $c ・・・・・・・・・ $az と100個あったとします。 10分ごとに$textの値が$a $b $c … と変化していき $azまでいくと$aに戻り…と永遠に繰り返すプログラムを 組みたいと考えています。 感覚としては以下のような感じです。 $text = $a; (10分後) $text = $b; (10分後) $text = $c; (10分後) ・ ・ ・ (10分後) $text = $az; (10分後) $text = $a; (10分後) $text = $b; (10分後) $text = $c; (10分後) ・ ・ ・ (10分後) $text = $az; echo $text; <?php if(strtotime("2008/10/02 17:00:00") < mktime() and strtotime("2008/10/02 17:10:00") > mktime() ){ $text = $a; }elseif(strtotime("2008/10/02 17:10:00") < mktime() and strtotime("2008/10/02 17:20:00") > mktime() ){ $text = $b; }elseif ・ ・ ・ } ?> いまのわたしの知識ではこの方法くらいしか思いつきませんでした。 しかも、ループというわけではなく非常に効率が悪いです。 もっと単純に、10分ごとに変化するやり方はあると思うのですが、どうしても思いつきません。 どなたかご教授のほど、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • masa6272
  • ベストアンサー率66% (93/140)
回答No.2

アクセスされた時刻で、$txtの値が変わってけばいいのでしょうか? $a[0] ~ $a[99] までに値を入れておきます。 $text = $a[(floor((time() - strtotime("2008/10/02 17:00:00")) / 600)) % 100]; でどうでしょう? "2008/10/02 17:00:00" は、基準時間です。 600 は 600秒 = 10 分 100 はデータの個数です。

masarin16
質問者

お礼

ご回答いただき、ありがとうございます。 とても分かりやすく、たいへんうれしく思います。 上記では、「600」(秒)の変更による時間の間隔の変更や「100」の変更によるデータの個数の変更も容易ですね。 「このような書き方があるんだ!」とたいへん勉強になる回答でした。 [floor((time() - strtotime("2008/10/02 17:00:00")) / 600)) % 100] の値が「99」までいくと、つぎは「0」に戻りループするのも、わたしが期待していたプログラムです。 ほんとうにありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

10分ごとにcronやタスクスケジューラーで更新をすれば?

masarin16
質問者

お礼

お答えいただき、ありがとうございます。 cronやタスクスケジューラーは聞いたことがありませんでした。 いずれ勉強してみたいと思います。

関連するQ&A