【问题标题】:For loop with certain items in array requiring different classes for a certain period of daysFor 循环,数组中的某些项目在特定天数内需要不同的类
【发布时间】:2015-12-02 14:15:16
【问题描述】:

我有一个 for 循环,它在出现日历中显示 24 个优惠。在提供优惠的当天,过去一天的优惠被给予过期课程,未来一天的优惠被禁用。

但有些日子提供超过 1 天的优惠区域,可能是 7 天、3 天等。

所以我的问题是,除了某些日子,我该如何做?

我的想法是我需要在item div 中的else if 语句中执行i[7] ...

else if ($today[mday] > $i ) { echo "expired"; }

<?php for ($i = 1; $i < 25; $i++) { ?>
<a href="offer.php?day=<?php echo $i; ?><? echo '&dealership='. $dealership; ?>" class="item <? if ($today[mday] == $i ) { echo " current yellow"; } else if ($today[mday] < $i+1 ) { echo "disabled gift"; } else if ($today[mday] > $i ) { echo "expired"; } ?>">
    <div class="offer">
        <h2>Day <?php echo $i; ?>.</h2>
        <span class="unavailable">No Longer Available</span>
        <p><? echo call_user_func('Day_'.$i.'_Offer', 'CAL_OFFER'); ?></p>
        <? echo $termsLink; ?>
    </div>
    <div class="offer-img">
        <img src="img/day<?php echo $i; ?>.jpg">
    </div>
</a>
<?php } ?>

【问题讨论】:

  • for ($i = date("d"); ... ) { ... } 可能是您要查找的内容,它获取当前日期并将其 plonks 转换为 $i,即今天将变为 $i = 02
  • 问题在于它不包括过去的日子,所以 day1 不会包含在循环中。

标签: php loops for-loop


【解决方案1】:

如果您有 24 个优惠,并且想让某些优惠超过一天,请创建一个包含优惠有效天数的数组:

$offer = array( 1, 1, 1, 3, 1, 1, 7 ... );

$today = intval( date( 'j' ) );

for ($i = 1; $i < 25; $i++) {
    if ( $today >= $i && $today < $i+$offer[$i-1] )
        // Current offer
    else if ( $today > $i )
        // Expired
    else
        // Disabled
}

更新添加了 $today 并修复了第一个 if 语句的问题

【讨论】:

  • 谢谢你的工作:)。我知道这是一个单独的问题,但如果我想手动将 $today 设置为第 7 天只是为了测试我该怎么做?
  • 哈哈!尝试将$today = intval( date( 'j' ) ); 更改为$today = 7;
  • 谢谢,我刚刚把 'j' 换成了一个数字 :)
  • 如果我开始一个新问题,你能帮忙吗?或者我应该在这里发帖吗?
  • 开始一个新问题!如果我有空,我会看看我能不能帮忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 2021-10-10
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多