1

リンクのリストを生成しようとしています。現在の月から各月に 1 つずつ、X か月間逆方向に作業しています。

2013 年 2 月を「スキップ」していることを除いて、ほとんど機能しているものがあります。現在のスクリーンショットは次のとおりです。

ここに画像の説明を入力

そのリストを生成しているビュー テンプレートのコードは次のとおりです。

        <?php for( $i = 1; $i <= 8; $i++ ): ?>
            <li>
                <?php $prior_time = strtotime( "-$i month" ); ?>
                <?php $month = date( 'm', $prior_time ); ?>
                <?php $year = date( 'Y', $prior_time ); ?>
                <?php $day = date( 't', mktime( 0, 0, 0, $month, 1, $year ) ); ?>
                <?php $prior_month_string = date( 'F', $prior_time ); ?>
                <?php $prior_month_from = date( 'm/01/Y', $prior_time ); ?>
                <?php $prior_month_to = date( "m/$day/Y", $prior_time ); ?>
                <?php if( date( 'F', strtotime( $selected_from ) ) == $prior_month_string ): ?>
                    <?php echo $prior_month_string; ?>
                <?php else: ?>
                    <a href='/claims?<?php echo "from=$prior_month_from&to=$prior_month_to"; ?>'
                       data-from='<?php echo $prior_month_from; ?>'
                       data-to='<?php echo $prior_month_to; ?>'>
                        <?php echo $prior_month_string; ?>
                    </a>
                <?php endif; ?>
            </li>
        <?php endfor; ?>

面白いことに、forループを拡張して まで実行すると$i <= 18、 2012 年 2 月表示されます。しかし、何らかの理由で、2013 年 2 月を表示しようとすると、別の 2013 年 3 月が表示されます (上記のスクリーンショットに示されている問題の例)。

問題はここにあるようです:

$prior_time = strtotime( "-$i month" );

しかし、私はそれを回避する理由と方法について途方に暮れています。このアルゴリズムが 2013 年 2 月ではなく 2013 年 3 月の 2 番目を吐き出すのはなぜですか? どうすればこの奇妙さを回避できますか?

4

1 に答える 1