php合并时间区间

news/2024/10/14 8:28:55

需要写一段合并时间区间的代码,写个demo记录下

<?php
$arr = [["2024-04-16 11:25:46", "2024-04-16 12:19:21"],["2024-04-16 03:14:06", "2024-04-16 10:13:21"],["2024-04-16 13:14:59", "2024-04-16 15:44:46"],["2024-04-16 12:19:21", "2024-04-16 13:58:30"],["2024-04-16 13:58:30", "2024-04-16 15:08:37"],["2024-04-16 04:33:52", "2024-04-16 10:12:47"],["2024-04-16 03:44:18", "2024-04-16 10:44:23"]
];function handleTimeRange($arr)
{usort($arr, function ($a, $b) {return strtotime($a[0]) - strtotime($b[0]);});$time_range = [];foreach ($arr as $row) {$flag_cross = false;foreach ($time_range  as $i => $item) {if ($row[0] < $item[0] && $row[1] >= $item[0] && $row[1] <= $item[1]) {$flag_cross = true;$time_range[$i][0] = $row[0];} else if ($row[0] >= $item[0] && $row[0] <= $item[1] && $row[1] > $item[1]) {$flag_cross = true;$time_range[$i][1] = $row[1];} else if ($row[0] < $item[0] && $row[1] > $item[1]) {$flag_cross = true;$time_range[$i][0] = $row[0];$time_range[$i][1] = $row[1];} else if ($row[0] > $item[0] && $row[1] < $item[1]) {$flag_cross = true;}}if (empty($time_range)) $time_range[] = $row;if (!$flag_cross && !in_array($row, $time_range)) $time_range[] = $row;}return $time_range;
}echo '<pre>';
$tr = handleTimeRange($arr);
var_dump($tr);

先将数组中元素按照起始时间排序,再遍历数组判断时间区间之间是否有重合的部分,如有则合并时间区间,如没有则将新的时间区间放入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/26774.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

王道数据结构个人向笔记-第二章(线性表)

目录2.1 线性表的定义和基本操作2.2 顺序表2.2.1 顺序表的定义2.2.2 顺序表的插入、删除(实现是基于静态分配)2.2.3 顺序表的查找2.3 链表2.3.1 单链表的定义2.3.2 单链表的插入删除2.3.3 单链表的查找2.3.4 单链表的建立2.3.4 双链表2.3.5 循环链表2.1 线性表的定义和基本操…

Java安全基础之Java反射机制和ClassLoader类加载机制

反射机制允许程序在运行时检查和操作类、对象、方法以及属性的信息。类加载机制负责将类的字节码加载到内存中,并且在运行时动态地链接和初始化类。目录Java 反射机制反射 java.lang.RuntimeClassLoader 类加载机制URLClassLoaderloadClass() 与 Class.forName() 的区别? Jav…

高中生一定就会了么???(i)

\(题源:2023星光杯数学思维能力测评(小学组)第一试\)\(表示离谱\)

1. SpringBoot 入门

1. SpringBoot 简介 SpringBoot是由Pivotal团队提供的全新框架,可以帮助我们开发基于Spring的、独立的、生产级的应用程序。​ 其中SpringBoot的官网是:Spring Boot Reference DocumentationSpringBoot的主要目标是:为所有Spring开发提供更快的入门体验开箱即用,提供了自动…

鸿蒙安装apk软件失败(不支持该设备)

1.关闭纯净模式增强模块 2.给文件管理器一个权限,一个安装外部来源应用的权限魔芋爽要犯了.jpg1.关闭纯净血压增高模块 2.安装外部来源(默认文件管理器是没有权限的) 3.没登华为账号,等七天过了再来试试后续(matepad11.5就是垃圾,快退!.jpg)

mysql连接不上,服务中找不到mysql

分析 因为太久没使用mysql,服务自动删除了解决 注册/安装服务 win+x,a,以管理员打开powershell(或者使用cmd,随你) # 注意此处需要引号,因为有空格 # 1. cd到mysql的可执行文件,如果记不得或者像我一样懒,直接everything搜索mysqld.exe即可 cd C:\Program Files\MySQL\My…

星趴解包教程

目录#1 提取资源文件#2 解密#3 读取资源#4 导出资源#4.1 导出单个 / 少量资源#4.2 按种类导出资源#5 资源去重(可选) 本篇文章偏小白向,有一定基础的可以选择性阅读 本文仅供学习交流使用,请勿用于商业用途。更新至 2024.5.2, 星趴版本号 v1.2.3_20240430_123a#1 提取资源文…