[英]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;
}
您可以使用集合unique
和count
方法:
$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.