首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中的无限循环

PHP中的无限循环
EN

Stack Overflow用户
提问于 2014-05-19 01:44:55
回答 1查看 62关注 0票数 0

我正在做一个项目,其中我必须做一个144个律师的随机计划。这个计划是每个month.So在一个月的每一天都会有3-4个律师。这个计划将在每个月的开始进行。这个计划必须是随机的,每个人都要被平等地挑选出来。

我的想法是这样的:第一次我每天接4个人(144/31=4),剩下的20个人计划在5月1日-20日。有4个计划,每个律师选择他们将参与的计划。在我的数据库中,我将每个选项都存储在一个表中。例如,如果他选择计划1(称为politie_parchet_all),他将在数据库的表中有1)。

问题是这里的...This代码只运行if子句,其余24个人保持未选中状态。我认为不退出if子句,我不知道为什么?

代码语言:javascript
复制
$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()函数:<-此函数运行良好。

代码语言:javascript
复制
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子句来挑选。

EN

回答 1

Stack Overflow用户

发布于 2014-05-19 02:08:03

我的建议是:

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

这个例行公事适用于任何数量的律师。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23724996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档