Как проверить, если две даты в массиве не совпадают с Carbon - PullRequest
1 голос
/ 10 апреля 2020

Я использую фреймворк Laravel, у меня есть массив дат, где я хочу проверить, существуют ли две одинаковые даты. Вот этот массив .

private function validateFlyingDatesAreOverlapping($flyingDates)
{
    foreach ($flyingDates as $key => $datePick) {
        $datePickInstance = Carbon::parse($datePick)->startOfDay();
        foreach ($flyingDates as $index => $dateCompare) {
            $dateCompare = Carbon::parse($dateCompare)->startOfDay();
            if ($key != $index) {
                $result = $datePickInstance->eq($dateCompare);
                if ($result) {
                    return true;
                }
            }
        }
    }
    return false;
}

Ответы [ 2 ]

3 голосов
/ 10 апреля 2020

Вы можете использовать коллекцию unique и count метод:

$is_same_exists = !(collect($data)->count() == collect($data)->unique()->count());
2 голосов
/ 10 апреля 2020

Если вам просто нужно знать, существуют ли дубликаты, не получая значений (ваша функция возвращает логическое значение, так что, похоже, это то, что вам нужно), то вы можете просто сравнить количество элементов в исходном массиве с количеством уникальных элементы в массиве, например:

if (count(array_unique($array)) != count($array)) {
   //duplicates is exists
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...