取多维数组如
array(
array('begin' => '2006-01-01', 'finish' => '2006-02-28'),
array('begin' => '2006-03-01', 'finish' => '2006-06-30'),
array('begin' => '2006-08-01', 'finish' => '2007-12-30'),
array('begin' => '2007-01-01', 'finish' => '2016-12-30'),
);
我正在尝试找出处理范围和重叠程度不同的第 N 个数组的最佳方法,以查看在 N 年的过程中是否存在差距。我目前的要求是一个月。但我目前根本无法解决这个问题。无需经过一系列嵌套的 foreaches,这些嵌套 foreach 最终让我陷入困境,并且处理更大的数据集的成本太高。
最佳答案
此代码有望在 O(n) 内,并假定它是示例中的有序数组。
我曾经使用过这种日期格式可以作为字符串进行比较并给出相同的结果,就好像您使用过复杂的日期对象一样。
// $a is your multidimensional array as above
$gap = array();
for($i=1; $i<sizeof($a); $i++){
$gap[$i] = $a[$i-1]['finish'] < $a[$i]['begin'];
}
$gap
包含一个数组或 bool 值,指示在哪些索引处存在间隙。
关于PHP 在多个日期范围内查找 N 年内的差距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41153755/