我有一个网站,我想在上面显示项目。这些项目以下列格式存储在数据库中:
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) 更聪明地解决这个问题吗?