php两个数组交叉生成新数组,php – 基于重叠实体数组创建一个新数组

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

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

[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)(单独)放入在第一个项目(即时间)上排序的元组数组中.然后从最低时间到最高时间遍历数组,保持打开的预留,把每一个新的都放在同一个会话中.关闭会话中的最后一个预留后,关闭会话.

标签:php,algorithm,arrays,performance

来源: https://codeday.me/bug/20190630/1340559.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值