PHP中的无限循环

时间:2014-05-18 17:44:55

标签: php loops

我正在开展一个项目,我必须随机规划144名律师。这个计划是每个月。所以每个月的每一天都会有3-4名律师。这个计划将在每个月的开始时进行。这个计划必须是随机的,每个人都要平等接受。

我的想法是这样的:我第一次每天捡到四个人([144/31] = 4),剩下的20个人计划在5月1日至20日。有4个计划,每个律师都会选择参加哪个计划。在我的数据库中,我将每个选项存储在一个表中。例如,如果他选择计划1(称为politie_parchet_all),他将从数据库中获得1个表。

问题出在这里......这段代码只运行if子句,其余24人仍未选中。我认为不要退出if条款,我不要知道为什么吗?

$str_date ="01-".$luna."-".$an;
$start_date = strtotime($str_date);
$end_date = strtotime('+1 month',$start_date);

$number_days = date("t",$start_date);
$nr_lawyer =number_lawyer($planificare);   

while ($nr_lawyer >0) 
{
    $nr_lawyer =number_lawyer($planificare);
    if($nr_lawyer > $number_days)
    {
        $nr = intval($nr_lawyer/$number_days);

        while ($start_date < $end_date) 
        {
            $time=date('Y-m-d',$start_date);

            for ($i=1; $i<=$nr; $i++)
            { 
                $time=date('Y-m-d',$start_date);
                selectare_avocat($planificare,$time);
            }
            $start_date = strtotime('+1 days',$start_date);
        }
    }
    else if($nr_lawyer < $number_days)
    {
        $str_date ="01-".$luna."-".$an;

        $start_date = strtotime($str_date);
        $end_date = strtotime('+'.number_lawyer($planificare).' days',$start_date);
        echo date('Y-m-d',$end_date);
        while ($start_date < $end_date) 
        {
            $time=date('Y-m-d',$start_date);
            selectare_avocat($planificare,$time);
            $start_date = strtotime('+1 days',$start_date);
        }
    }
    $nr_lawyer = number_lawyer($planificare);
}

selectare_avocat是一个选择随机律师的函数,将此随机律师存储在generare_liste表中并更新select = 1

select = 0表示他可以被选中。如果选择了律师,那么在所有律师被选中之前,他们将不再被选中。

selectare_avocat()函数:&lt; - 此函数运行良好。

function selectare_avocat($planificare,$time) {
    global $con;
    $sql3="SELECT avocat.id from avocat  WHERE avocat.select=0 AND avocat.".$planificare." = 1 AND avocat.id NOT IN (SELECT id_avocat FROM generare_liste WHERE `data` LIKE '{$time}') ORDER BY RAND() LIMIT 1";
    $result3 = mysqli_query($con,$sql3);
    $row=mysqli_fetch_array($result3);
    $id = $row['id'];

    $sql4="INSERT INTO generare_liste(id,id_avocat,planificare,data)VALUES(null,".$id.",'{$planificare}','{$time}')";
    mysqli_query($con,$sql4);
    $sql2="UPDATE `avocat` SET `select`=1 WHERE id={$id}";
    mysqli_query($con,$sql2);
}

问题是这个脚本永远不会结束并且只是在if条款上被阻止(因为在generare_lista表中我只有124名律师之后)和剩下的20名必须接受的律师使用else子句。

1 个答案:

答案 0 :(得分:0)

我的建议是:

获取实际月份的天数=&gt; $ number_days = date(“t”,$ start_date); 初始化变量     $ cont = 1; 创建一个空数组     $ list = array(); 在数据数组中循环,直到它为空; 做     $ list [$ cont] =数组数据中的一些随机值,然后将其从数组数据中删除; 测试是否     $ cont大于$ number_days,然后将其变为1 增量     $续++;

这个例程适合任何律师。