如何删除两个数组之间的重复数组

时间:2018-08-29 06:38:34

标签: php arrays

我要删除2个数组之间的相同数组

1 )  $getAlldate

array:8 [▼
  0 => "2018-08-17"
  1 => "2018-08-20"
  2 => "2018-08-21"
  3 => "2018-08-22"
  4 => "2018-08-23"
  5 => "2018-08-24"
  6 => "2018-08-27"
  7 => "2018-08-28"
]

2) $getHoliday
array:7 [▼
  0 => "2019-1-1"
  1 => "2019-3-6"
  2 => "2019-2-28"
  3 => "2019-5-2"
  4 => "2019-4-25"
  5 => "2018-8-27"
  6 => "2018-8-28"
]

如您在我的数组2018-08-27,2018-08-28中看到的与$getholiday重复的一样,我尝试使用array_diff,但仍然无法正常工作

$a = array_diff($getAllDate, $getHoliday);
$b = array_unique($a);

如何像这样$getalldate输出,删除相同的值$getHoliday

array:8 [▼
  0 => "2018-08-17"
  1 => "2018-08-20"
  2 => "2018-08-21"
  3 => "2018-08-22"
  4 => "2018-08-23"
  5 => "2018-08-24"
]

1 个答案:

答案 0 :(得分:2)

两个日期的格式不同。

尝试:

PHP代码:

$getAlldate =  [
   "2018-08-17",
   "2018-08-20",
   "2018-08-21",
   "2018-08-22",
   "2018-08-23",
   "2018-08-24",
   "2018-08-27",
   "2018-08-28"
];


$getHoliday=[
   "2019-1-1",
   "2019-3-6",
   "2019-2-28",
   "2019-5-2",
   "2019-4-25",
   "2018-8-27",
   "2018-8-28"
];

$formattedHoliday = array_map(function ($holiday) {
    $alldateFormat = 'Y-m-d';
    $HolidayFormat = 'Y-n-d';
    $date = DateTime::createFromFormat($HolidayFormat, $holiday);
    return $date->format($alldateFormat);
}, $getHoliday);

var_dump(array_diff($getAlldate, $formattedHoliday));

输出:https://3v4l.org/rCLCk

引用:

DateTime :: createFromFormat http://php.net/manual/en/datetime.createfromformat.php

DateTime :: format http://php.net/manual/en/datetime.format.php