Мне нужно подтвердить, все ли строки миссии подтверждены данными, найденными в массиве сотрудников. Для каждого соответствующего дня в массиве миссии каждое из шести значений часов с разделителями должно быть равно или меньше соответствующего значения часа в массиве сотрудников.
Код: Выделить всё
$mission = [
['days' => 'Monday', 'hours' => '1,0,0,0,0,0'],
['days' => 'Tuesday', 'hours' => '1,1,0,0,0,1'],
];
$employee = [
['days' => 'Monday', 'hours' => '1,0,0,0,0,0'],
['days' => 'Tuesday', 'hours' => '1,1,0,0,0,1'],
['days' => 'Wednesday', 'hours' => '1,1,0,0,0,1'],
];
Если сотрудник доступен (как в приведенном выше случае), понедельник
и вторник с включенными часами работы (1 и 0 обозначают часы, и положение каждого элемента очень важно ), то миссию можно принять.
Часть моего кода:
Код: Выделить всё
foreach ($mission as $m) {
# code...
$m_days[] = $m['days'];
foreach ($employee as $e) {
$e_days[] = $e['days'];
}
$i++;
}
/// First condition if m_days > e_days so valid
$valid = (sizeof($m_days) > sizeof($e_days)) ? true : false;
После этого я понятия не имею, как сравнить, доступен ли сотрудник хотя бы в рабочее время. Например, если задание выпадает на понедельник с часами: 1,1,0,0,0,1 и сотрудник свободен на понедельник с часами: 1,1,1,0,0,1 > -- он может взять на себя миссию. Однако если доступность сотрудника на понедельник равна: 1,0,0,0,0,1, то миссию невозможно выполнить.
Я попробовал использовать array_diff()< /code>, но он не работает так, как показано здесь.
Подробнее здесь:
https://stackoverflow.com/questions/417 ... -another-2