我想为我的工作创建一个计划组织者。我有一份同事名单和我们的工作岗位/任务/任务清单。没有人应该被分配相同的任务,比如说,每个月超过4天,我们应该有一些混合,以便不是同一个人一直在一起工作。
我通过与员工一起洗牌来实现后者。我遇到了以下逻辑问题:当我将员工与分配和数据库中的历史记录进行比较时,我的脚本会尝试在另一个员工之后分配2个阵列(一个与员工,另一个与分配) ,如果一名员工完成了特定的任务,那么它会跳到下一个。如果所有其他员工都已完成,那么我会执行其他代码。问题是,如果一个员工已被分配,但同时列表中的下一个任务仅对他有用,那么我找不到一种聪明的方法来重新分配/改革/重新安排这些地方。
这是我到目前为止编写的代码:
function check_employee($shuffled_names,$positions,$conn)
{
for($i=0;$i<count($shuffled_names);$i++)
{
if(comparison($shuffled_names[$i],$positions[0],$conn))
{
$temp_names[] = $shuffled_names[$i];
$temp_positions[] = $positions[0];
if($positions[0] != "GMP")
{
unset($positions[0]);
$positions = array_values($positions);
}
}
else
{
foreach($temp_names as $tnames)
{
if(comparison($tnames,$positions[0],$conn))
{
$temp_names[] = $tnames;
unset($tnames);
echo "tnames: ",$tnames;
$temp_positions[] = $positions[0];
break;
}
}
}
}
//print_r($temp_positions);
for($i=0;$i<count($temp_names);$i++)
$sql[] = "INSERT INTO schedules(date,name,position) VALUES (CURDATE(),'$temp_names[$i]','$temp_positions[$i]')";
foreach($sql as $query)
$conn->query($query);
return [$temp_names,$temp_positions];
}