1

私は3つのミニカレンダー月を表示するカレンダーシステムを構築しようとしています。先月、今月、そして来月。

以下のコードは、配列ポインタを現在の月に移動するだけです。金曜日(9月28日)に動作していると思いましたが、今朝(10月1日)にログに次のエラーが発生します。 PHP Fatal error: Maximum execution time of 30 seconds exceeded

新しい月であることがそれと関係があるとは思えませんが、私はアイデアを把握しています。すべてが私には正しいように見えるので、誰かが私がここで間違っていることを見ることができることを望んでいます。

$ thisMonth = date('m'、time());

$ arrMonths = array('01'=>'1月'、'02'=>'2月'、'03'=>'3月'、'04'=>'4月'、
                    '05' => '5月'、 '06' =>'6月'、 '07' =>'7月'、'08' =>'8月'、
                    '09' => '9月'、 '10' =>'10月'、 '11' =>'11月'、' 12'=>' 12月');

while(key($ arrMonths)!== $ thisMonth)
    next($ arrMonths);
4

1 に答える 1

2

これは、厳密な比較演算子を使用しているためです。

while (key($arrMonths) !== $thisMonth) 
    next($arrMonths);

!==キーのタイプと内容の両方を一致させようとしています。この場合、一重引用符で宣言しているため、キーは文字列です。型の比較(文字列と整数を比較している)に失敗しているため、無限ループに入ります。

これを修正するには、より緩い比較演算子を使用します。

while (key($arrMonths) != $thisMonth) 
    next($arrMonths);

@MiDoのおかげで-私は実際にこれを間違えました:

the return value of date('m', time()); is a string and the keys are integers when they are >= 10.
于 2012-10-01T16:45:17.117 に答える