加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 基于重叠实体数组创建一个新数组

发布时间:2021-08-28 03:43:21 所属栏目:大数据 来源: https://www.jb51.cc
导读:你有没有一天你的大脑没有脱离一档? 我有一个包含开始和结束时间的数组.我想创建一个新数组,显示初始数组中重叠条目的键.所以,说我们有一些“保留”.任何重叠的“预订”都属于同一个“会话”.一个初始数组如: [reservations] = Array ( [1125] = Array ( [

你有没有一天你的大脑没有脱离一档?

我有一个包含开始和结束时间的数组.我想创建一个新数组,显示初始数组中重叠条目的键.所以,说我们有一些“保留”.任何重叠的“预订”都属于同一个“会话”.一个初始数组如:

[reservations] => Array
    (
        [1125] => Array
            (
                [start] => 2011-01-07 10:00:00
                [end] => 2011-01-07 10:30:00
            )
        [1244] => Array
            (
                [start] => 2011-01-07 10:15:00
                [end] => 2011-01-07 11:30:00
             )
        [1311] => Array
            (
                [start] => 2011-01-07 11:00:00
                [end] => 2011-01-07 11:45:00
            )
        [1422] => Array
            (
                [start] => 2011-01-07 12:00:00
                [end] => 2011-01-07 12:30:00
             )
        [1561] => Array
            (
               [start] => 2011-01-07 12:30:00
               [end] => 2011-01-07 12:45:00
            )
        [1622] => Array
            (
               [start] => 2011-01-07 13:00:00
               [end] => 2011-01-07 13:45:00
            )
    )

会生成一个新的数组,如:

[sessions] => Array
    (
        [0] => Array
            (
                [0] => 1125
                [1] => 1244
                [2] => 1311
            )
        [1] => Array
            (
                [0] => 1422
                [1] => 1561
            )
        [2] => Array
            (
                [0] => 1622
            )
    )

对大型阵列执行此操作的最有效方法是什么?谢谢!

解决方法:

对于每个预留,将其(start,id)和(end,id)(单独)放入在第一个项目(即时间)上排序的元组数组中.然后从最低时间到最高时间遍历数组,保持打开的预留,把每一个新的都放在同一个会话中.关闭会话中的最后一个预留后,关闭会话.

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读