私はスタッフの時間のリストを持っています。 Andreas' helpでスタッフスケジュールが一人で作業する分
| staff| start | end |
|:--- |:--- |:--- |
| 1 | 11:05 | 20:00 |
| 2 | 11:00 | 17:00 |
| 3 | 19:00 | 03:00 |
| 4 | 13:00 | 20:00 |
| 5 | 19:00 | 03:00 |
を私はスタッフのいずれかを単独で働いていたかどうかを確認する必要があり、彼らはその日のために一人で働いていた何分、次は単独で働いていた最初と最後の人を取得するコードですそれだけではない。一人で働いた時代が違う3人の人がいたら、それは問題を起こすでしょう。次の配列を持つhttps://3v4l.org/6OmjO
$staff = array(1,2,3,4,5);
$start = array("11:05", "11:00", "19:00", "13:00", "19:00");
$end = array("20:00", "17:00", "03:00", "20:00", "03:05");
array_multisort($start, $end, $staff);
$aloneStart = (strtotime($start[1]) - strtotime($start[0]))/60; // first and second items are the ones that may be working alone at start
$aloneEnd = (strtotime($end[count($end) - 1]) - strtotime($end[count($end) - 2]))/60; // last and second to last are the ones that may be working alone at end
if ($aloneStart > 0)
{
$staffAloneStart = $staff[0]; //must be the first who worked alone
echo "minutes alone at start: " . $aloneStart . " and it was " . $staffAloneStart . "\n";
}
if ($aloneEnd > 0)
{
$staffAloneEnd = $staff[count($end) - 1]; // must be the last to end that worked alone
echo "minutes alone at end: " . $aloneEnd . " and it was " . $staffAloneEnd . "\n";
}
$aloneTime = intval($aloneStart) + intval($aloneEnd);
echo "total time alone " . $aloneTime;
、あなたは彼が夜に一人以上働いているので、最初のユーザーのための分は、より多くのそして5分であることが必要でしょう。
$staff = array(1, 2, 3, 4, 5);
$start = array("11:05", "11:10", "19:00", "13:00", "19:00");
$end = array("20:00", "17:00", "03:00", "16:00", "03:00");
@mickmackusa日付を追加することは問題ではない、私が困惑している計算です。 – Basit
@mickmackusa私は彼の2つの質問を理解した方法は、出力は誰が持っているかを示すものでなければなりません一人で、どれくらい長い間。とにかくあなたが望むものにあなたの出力を変えることができるように思われるので、あなたがそれを提示する方法はおそらくあまり重要ではありません。私は間違っているかもしれませんが、それが私がBasitを理解した方法です。また、彼はPHPで多くのqustionsと答えを持っているので、彼はあなたが彼に与えるすべての出力を処理することができると思います。 – Andreas
お待ちしております... – Basit