Автор оригинала: David Wong.
php /** *Time period coincidence judgment *@ param array $data date array *@ param string $fieldstart start start date field name *@ param string $fieldend end date field name *@ return bool true means coincidence, false means non coincidence */ function is_time_cross(array $data, string $fieldStart = 'start_day', string $fieldEnd = 'end_day') { //Sort by start date array_multisort( array_column($data, $fieldStart), SORT_ASC, $data ); //Bubble judge whether meet the condition of time period coincidence $num = count($data); for ($i = 1; $i < $num; $i++) { $pre = $data[$i-1]; $current = $data[$i]; if (strtotime($pre[$fieldStart]) <= strtotime($current[$fieldEnd]) && strtotime($current[$fieldStart]) <= strtotime($pre[$fieldEnd])) { return true; } } return false; } //Test example $data = [ ['start_day' => '2019-01-01', 'end_day' => '2019-01-31'], ['start_day' => '2018-01-01', 'end_day' => '2018-01-31'], ['start_day' => '2019-03-01', 'end_day' => '2019-05-31'], ['start_day' => '2019-10-01', 'end_day' => '2019-10-31'], ['start_day' => '2019-04-01', 'end_day' => '2019-04-10'], ]; var_dump(is_time_cross($data));
Оригинал: “https://developpaper.com/interval-coincidence-algorithm-multiple-time-periods-coincidence-judgment/”