Я пишу составное приложение.Это утверждение проверяет, что, заказывая дополнительную смену, пользователь не нарушает правило, согласно которому он заказал более 7 ночных смен подряд.Этот код работает нормально, но я пытаюсь найти более элегантный способ написать его, например, используя цикл for в операторе if.Этот фрагмент существует в большем цикле while.
if (
$original_shift->night_shift==true &&
$p_lookback_night_7===[1,1,1,1,1,1,1] || $p_lookforward_night_7===[1,1,1,1,1,1,1] ||
($p_lookback_night_1===[1] && $p_lookforward_night_6===[1,1,1,1,1,1]) ||
($p_lookback_night_2===[1,1] && $p_lookforward_night_5===[1,1,1,1,1]) ||
($p_lookback_night_3===[1,1,1] && $p_lookforward_night_4===[1,1,1,1]) ||
($p_lookback_night_4===[1,1,1,1] && $p_lookforward_night_3===[1,1,1]) ||
($p_lookback_night_5===[1,1,1,1,1] && $p_lookforward_night_2===[1,1]) ||
($p_lookback_night_6===[1,1,1,1,1,1] && $p_lookforward_night_1===[1])
) {
return 'You can\'t do more than 7 night shifts in a row';
break;
}
Переменные $p_look
заполняются циклом, смотрящим назад или вперед на указанное количество дней в конце имени переменной и возвращающим массивистина или ложь для этого количества дней в зависимости от того, являются ли это ночными сменами или нет.