为每个可用的php工作人员分配相同的工作量



我想为php中可用的每个工人分配相同的工作量。

这是我的可用工作者阵列:

if (!isset($array_worker)){
$array_worker = array();
}
$stmt = $dbh->prepare("SELECT username 
FROM group_members 
WHERE grp_id = :grp_id 
AND statut > 0 
AND specification != 2");
$stmt->bindValue(':grp_id', $grp_id);    
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $key => $value){
if (!in_array($value['username'], $array_worker)){
array_push($array_worker, $value['username']);
}
}

此array_worker返回2个条目

这就是我尝试的原因

$n = 0;
for ($i = 0; $i < count_worknotdone($grp_id); $i++) {
if ($n >= count($array_worker)){
$n = 0;
}
$stmt = $dbh->prepare("UPDATE work 
SET worker = :worker 
WHERE grp_id = :grp_id 
AND worker IS NULL"); 
$stmt->bindValue(':worker ', $array_worker[$n]);
$stmt->bindValue(':grp_id', $grp_id);
$stmt->execute();
$n++;
}       

但每个工作只分配第一个工人。。

我想要什么,例如,如果我们有2名工人可用,4项工作未完成

我们为每个工人分配2项工作。

谢谢

if (!isset($array_worker)){
$array_worker = array();
}
if (!isset($array_id)){
$array_id = array();
}
$stmt = $dbh->prepare("SELECT username FROM group_members WHERE grp_id = :grp_id AND statut > 0 AND specification != 2");
$stmt->bindValue(':grp_id', $grp_id);    
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $key => $value){
if (!in_array($value['username'], $array_worker)){
array_push($array_worker, $value['username']);
}
}
$stmt = $dbh->prepare("SELECT id FROM work WHERE grp_id = :grp_id AND statut < 1 AND worker IS NULL");
$stmt->bindValue(':grp_id', $grp_id);    
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $key => $value){
if (!in_array($value['id'], $array_id)){
array_push($array_id, $value['id']);
}
}
$n = 0;
for ($i = 0; $i < count($array_id); $i++) {
if ($n >= count($array_worker)){
$n = 0;
}
$stmt = $dbh->prepare("UPDATE work SET worker = :worker WHERE id = :id AND grp_id = :grp_id AND worker IS NULL");
$stmt->bindValue(':id', $array_id[$i]);
$stmt->bindValue(':worker', $array_worker[$n]);
$stmt->bindValue(':grp_id', $grp_id);
$stmt->execute();

$n++;
}

我已经做了我想做的事,当然可以改进,但它确实有效。。

最新更新