#php #datetime
#php #datetime
Вопрос:
Я пытаюсь вычесть один массив из другого массива. но это связано со временем. Я не могу выдать ожидаемый результат. Просто я просто хочу удалить временной интервал перекрытия 2-го массива из первого массива.
В качестве примера у меня есть следующий массив
$array1 = [
0 => [
'start_hour' => 9,
'start_minute' => 0,
'end_hour' => 12,
'end_minute' => 0
],
1 => [
'start_hour' => 13,
'start_minute' => 0,
'end_hour' => 18,
'end_minute' => 0
]
];
$array2 = [
'start_hour' => 11,
'start_minute' => 0,
'end_hour' => 11,
'end_minute' => 30
];
Теперь я хочу вычесть $array2 из $ array1.
Мой ожидаемый результат, как показано ниже:
$result = [
0 => [
'start_hour' => 9,
'start_minute' => 0,
'end_hour' => 11,
'end_minute' => 0
],
1 => [
'start_hour' => 11,
'start_minute' => 30,
'end_hour' => 12,
'end_minute' => 0
],
2 => [
'start_hour' => 13,
'start_minute' => 0,
'end_hour' => 18,
'end_minute' => 0
]
];
Любые решения или подсказки были бы оценены. Заранее благодарю.
Комментарии:
1. Что, если период времени в array2 не перекрывает ни один из периодов в array1?
2. Хотя вы можете запутаться в одном конкретном случае, обобщенное решение, вероятно, будет включать дерево интервалов .
3. Самый простой способ играть с разницей во времени — это хранить результаты
time()
иmicrotime(true)
и управлять ими. используйте вычитание для различий. Преобразуйте его в текст только при выводе для пользователя.4. Что вы уже пробовали до сих пор? Это выглядит как идеальный фиктивный проект для изучения TDD