我有一个网站,我想在上面显示项目。这些项目以下列格式存储在数据库中:
ID Item Active
1 My item 0
2 My item 1
7 My item 1
8 My item 1
10 My item 0
请注意,ID 不一定是均匀分布的。每个项目要么是活动的(1)要么是不活动的(0)。我希望一次激活 3 个项目,每次调用我的脚本时,我都希望下一个项目变为活动状态,而最旧的项目变为非活动状态,如下所示:
ID Item Active
1 My item 0
2 My item 0
7 My item 1
8 My item 1
10 My item 1
所以:
ID Item Active
1 My item 1
2 My item 0
7 My item 0
8 My item 1
10 My item 1
我目前正在努力考虑上述第三种情况的算法。我不能只选择处于活动状态的最高 ID 并移至下一个项目并将其设置为活动状态,同时选择处于活动状态的最低 ID 并使其处于非活动状态。
到目前为止,这是我的代码:
{
for ($i=0;$i<sizeof($videos);$i++)
{
echo $i."]";
if ($videos[$i]->active == 1)
{
if (!isset($first_active))
{
echo "mooh";
echo "[";
echo $first_active = $i;
echo "]";
}
if ( ($i < (sizeof($videos)-1)) && ($videos[$i+1]->active == 0) )
{
$videos[$i+1]->active = 1;
$videos[$i+1]->update();
echo "@".$first_active."|".$videos[$first_active]->id()."@";
$videos[$first_active]->active = 0;
$videos[$first_active]->update();
$first_active = null;
echo "|".$videos[$i+1]->id();
break;
}
elseif ($i == (sizeof($videos)-1))
{
$videos[0]->active = 1;
$videos[0]->update();
$videos[$first_active]->active = 0;
$videos[$first_active]->update();
$first_active = null;
echo "|".$videos[0]->id();
break;
}
}
}
}
这一直有效,直到我走到最后,例如 ID 10。然后它正确地使 ID 1 处于活动状态。在下一次调用中,它使 ID 7 处于活动状态,而 ID 1 处于非活动状态。
知道如何 1) 修复我的代码,2) 更聪明地解决这个问题吗?