Проверьте, отображается ли конкретное значение ключа в массиве 3 раза

#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));