簡體   English   中英

如何驗證數組中的兩個日期是否與 Carbon 不同

[英]How to validate if two dates in array are not same with Carbon

我正在使用 Laravel 框架,我有一個日期數組,我想檢查是否存在兩個相同的日期。 數組是這個

array:5 [▼
  0 => "2020-04-11"
  1 => "2020-04-11"
  2 => "2020-04-12"
  3 => "2020-04-13"
  4 => "2020-04-21"
]

我已經編寫了以下 function 來檢查,它有效,但我很好奇是否有更好的方法來實現這一點,因為我必須盡快擴展它,所以會有更多的嵌套循環。

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;
}

您可以使用集合uniquecount方法:

$is_same_exists = !(collect($data)->count() == collect($data)->unique()->count());

如果您只需要知道是否存在重復項而不獲取值(您的 function 返回 boolean,所以看起來這就是您所需要的),那么您可以將初始數組中的項目數與數組中唯一項目數進行比較, 像這樣:

if (count(array_unique($array)) != count($array)) {
   //duplicates is exists
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM