如何使用php创建一个逻辑来循环HTML中的内容

如何使用php创建一个逻辑来循环HTML中的内容,php,html,Php,Html,我有一个下面的html代码,它的意思是显示6个广告。 我想做的是创建一个逻辑,用php循环以下内容。 例如:目前Ads1和ADS2位于顶部的第一和第二位,但当某个方法 称为Ads1和ADS2的将下降到Ads5和ADS6,Ads3和ADS4将占据第一和第二位置(循环)。 我的解释可能会让人困惑,但我想做的是在调用方法时循环两个标记(比如左轮手枪)。 实际上,我想用下面的代码每两周循环一次内容。我应该使用会话来保存数据吗?我怎样才能做到这一点?我很想听到你的消息 $weekInYearNumber

我有一个下面的html代码,它的意思是显示6个广告。 我想做的是创建一个逻辑,用php循环以下内容。 例如:目前Ads1和ADS2位于顶部的第一和第二位,但当某个方法 称为Ads1和ADS2的将下降到Ads5和ADS6,Ads3和ADS4将占据第一和第二位置(循环)。 我的解释可能会让人困惑,但我想做的是在调用方法时循环两个标记(比如左轮手枪)。 实际上,我想用下面的代码每两周循环一次内容。我应该使用会话来保存数据吗?我怎样才能做到这一点?我很想听到你的消息

$weekInYearNumber = (int)date('W');
$weekDayNumber = (int)date('w'); 
if ($weekInYearNumber % 2 == 0) {

}

<div class="ContentsWrap">
                <ul class="List_1">
                    <li>
                        <a>Ads1</a>
                    </li>
                    <li>
                        <a>Ads2</a>
                    </li>
                </ul>
                <ul class="List_2">
                    <li>
                        <a>Ads3</a>
                    </li>
                    <li>
                        <a>Ads4</a>
                    </li>
                    <li>
                        <a>Ads5</a>
                    </li>
                    <li>
                        <a>Ads6</a>
                    </li>
                </ul>
</div>
$weekindNumber=(int)日期('W');
$weekDayNumber=(int)日期('w');
如果($weeKindNumber%2==0){
}
  • Ads1
  • Ads2
  • Ads3
  • Ads4
  • Ads5
  • Ads6

您的方法将无法正常工作:

$weekInYearNumber = (int)date('W');
$weekDayNumber = (int)date('w'); 
if ($weekInYearNumber % 2 == 0) {
   // Rotate here
}
首先,如果仅每隔两周运行一次轮换,则必须保存状态,以便将其保留两周。
其次,每次访问页面时都会运行此代码。也就是说,您还必须保存我本周已轮换的信息

当然,您可以这样做,但也可以不保存(到数据库中)来完成。
要做到这一点,请使用下面的代码,而不是您的代码。评论中的解释:

// Fetch your ads and put them into an array (this is not yet rotated):
$ads = ['ad1', 'ad2', 'ad3', 'ad4', 'ad5', 'ad6'];

// We calculate the number of weeks since 1970-01-01 
// to always have the same basis for our calculation. 
// If you use (int)date('W') you will have a change each new year.
$weeknumber = floor(time() / 86400 / 7);

// Every two weeks, we rotate 2 items, which makes (count of ads) weeks for a full rotation.
$rotate = $weeknumber % count($ads);

//But we only rotate every two weeks
$rotate = floor($rotate / 2);

//Now, we rotate!
for ($i = 0; $i < $rotate; $i++) {
    // Push two elements to the end of the array
    array_push($ads, array_shift($ads));
    array_push($ads, array_shift($ads));
}

// Output your ads as you like and you are done.
//获取您的广告并将其放入一个数组中(尚未轮换):
$ads=['ad1'、'ad2'、'ad3'、'ad4'、'ad5'、'ad6'];
//我们计算自1970-01-01以来的周数
//我们的计算总是有相同的基础。
//如果您使用(int)date('W'),您将在每年的新年中进行更改。
$weeknumber=楼层(时间()/86400/7);
//每两周,我们轮换2个项目,这使得(计算广告数)周为一个完整的轮换。
$rotate=$weeknumber%计数($ads);
//但我们每两周才轮换一次
$rotate=地板($rotate/2);
//现在,我们轮换!
对于($i=0;$i<$rotate;$i++){
//将两个元素推到数组的末尾
数组推送($ads,数组移位($ads));
数组推送($ads,数组移位($ads));
}
//输出你喜欢的广告,你就完成了。

如果我想旋转8个内容,该怎么办?我应该将6替换为8吗?我更新了代码以使用可变数量的广告。但是,它们仍然需要是2的倍数。我应该使用会话来保存值吗?我应该保存哪些值?提前谢谢你!你的意思是我在答案顶部的评论?不,这个环节不起作用。为此,您需要一个持久性存储,如数据库。或者您使用我的解决方案。这是否意味着您的示例代码对于我的解决方案就足够了?