【发布时间】:2021-10-13 22:46:02
【问题描述】:
我有一个像下面这样的数组:
$array1 = [
[
"start_datetime" => "2021-08-10 12:05:00" ----> These are the initial intervals
"end_datetime" => "2021-08-10 14:20:00" ----> that I would like to separate
],
[
"start_datetime" => "2021-08-10 14:45:00"
"end_datetime" => "2021-08-10 18:55:00"
],
[
"start_datetime" => "2021-08-10 19:25:00"
"end_datetime" => "2021-08-10 21:00:00"
],
...
]
还有另一个数组:
$array2 = [
[
"start_datetime" => "2021-08-10 12:35:00" ----> These are the intervals to
"end_datetime" => "2021-08-10 13:35:00" ----> remove from the array
],
...
]
我想创建一个新的$array3,从$array2 中删除$array1 中的间隔,得到以下结果:
$array3 = [
[
"start_datetime" => "2021-08-10 12:05:00" ----> As you can see, these new array
"end_datetime" => "2021-08-10 12:35:00" ----> entries were added to remove
],
[
"start_datetime" => "2021-08-10 13:35:00" ----> the interval in $array2 which
"end_datetime" => "2021-08-10 14:20:00" ----> are from 12:35 to 13:35
],
[
"start_datetime" => "2021-08-10 14:45:00"
"end_datetime" => "2021-08-10 18:55:00"
],
[
"start_datetime" => "2021-08-10 19:25:00"
"end_datetime" => "2021-08-10 21:00:00"
],
...
]
如您所见,$array3 中添加了 2 个新条目以删除 $array2 中使用的间隔。我不知道如何解决算法来做到这一点。感谢您提供任何帮助、建议或资源。
请注意,$array1 中永远不会有 2 个相同的区间,区间是唯一的。
【问题讨论】:
-
好久没做PHP了,就不贴答案了。但是,您可以迭代数组并测试间隔是否在当前
$array1项的范围内。如果是,那么您知道您需要将两个项目推送到新数组中 - 对于要删除的间隔两侧的条目,否则您将$array1项目推送到新数组中 -
@KScandrett 谢谢你的想法!随意发布一个算法作为答案(或任何语言tbh):)我会尝试做你提出的^^
标签: php arrays algorithm date datetime