#php #loops
Вопрос:
У меня есть массив, в котором я хочу проверить, имеют ли start_time и end_time одинаковое значение, а start_time и end_time происходят три раза, чем цикл должен возвращать значение false.
например: В приведенном ниже массиве у меня есть массив внутри массива, массивы с идентификатором (4,5,6) имеют одинаковое значение start_time и end_time, а ниже три массива с идентификатором (8,9,10) имеют одинаковое значение. пока оба значения совпадают, он будет рассматриваться как приращение, массив, имеющий идентификатор (3), имеющий то же значение start_time, что и идентификатор (4,5,6), но он не будет учитываться, потому что время окончания отличается.
Любая помощь будет высоко оценена. Спасибо.
[
{
"id": 1,
"start_time": "10:00",
"end_time": "11:00"
},
{
"id": 2,
"start_time": "11:00",
"end_time": "12:00"
},
{
"id": 3,
"start_time": "13:00",
"end_time": "15:00"
},
{
"id": 4,
"start_time": "13:00",
"end_time": "14:00"
},
{
"id": 5,
"start_time": "13:00",
"end_time": "14:00"
},
{
"id": 6,
"start_time": "13:00",
"end_time": "14:00"
},
{
"id": 7,
"start_time": "14:00",
"end_time": "15:00"
},
{
"id": 8,
"start_time": "17:00",
"end_time": "18:00"
},
{
"id": 9,
"start_time": "17:00",
"end_time": "18:00"
},
{
"id": 10,
"start_time": "17:00",
"end_time": "18:00"
}
]
Комментарии:
1. Пожалуйста, укажите, какие попытки вы предприняли для достижения своей цели.
2. спасибо, я все понял.
Ответ №1:
public static function checkSlotLimit($orders, $startTime, $endTime)
{
$counter = 0;
foreach($orders as $order)
{
if( ($order->start_time === $startTime) amp;amp; ($order->end_time === $endTime) )
{
$counter ;
}
}
return $counter;
}
Self::checkSlotLimit($orders, $slotFrom->format('H:i'), $slotTo->format('H:i')) < 3 ? true : false;
Комментарии:
1. также можно просто отфильтровать и посчитать
return count(array_filter($orders, fn($order) => $order->start_time === $startTime amp;amp; $order->end_time === $endTime));