【发布时间】:2016-04-19 12:11:18
【问题描述】:
我有一个存储 ID 的数组,每个 ID 都有一个包含开始值和结束值的数组。我的目标是检查起始值是否小于数组中它之前的项目的结束值。
这可行,但我的循环不关心 ID,我需要一种方法来按 ID 执行此操作
这是我的数组的样子:
Array
(
[892] => Array
(
[41] => Array
(
[0] => Array
(
[start] => 0930
[end] => 1200
)
)
)
[897] => Array
(
[41] => Array
(
[0] => Array
(
[start] => 1000
[end] => 1230
)
)
)
[898] => Array
(
[41] => Array
(
[0] => Array
(
[start] => 1100
[end] => 1300
)
)
)
[901] => Array
(
[52] => Array
(
[0] => Array
(
[start] => 0930
[end] => 1030
)
)
)
[903] => Array
(
[52] => Array
(
[0] => Array
(
[start] => 0930
[end] => 1030
)
)
)
[904] => Array
(
[41] => Array
(
[0] => Array
(
[start] => 1000
[end] => 1230
)
)
)
)
这就是我的循环的样子:
$foundOverlap = false;
$prevEnd = null;
foreach($slots as $s){
$startHour = $s[0]['start'];
$endHour = $s[0]['end'];
echo $startHour . '<br>';
echo $endHour . '<br>';
if($prevEnd !== null && $startHour < $prevEnd){
$foundOverlap = true;
$counter++;
}
if($foundOverlap){
echo 'overlap <br>';
}else{
echo 'no overlap <br>';
}
$prevEnd = $endHour;
}
结果我得到没有重叠(好),重叠(好),重叠(好),重叠(坏!)这应该没有重叠。但它说重叠,因为它检查前一个数组项并不关心attractieID 是什么......
请知道我该如何解决这个问题?
我会很感激的!!
提前致谢!
【问题讨论】:
-
你今天已经问过同样的问题了。这是链接(stackoverflow.com/questions/36714467/…)
-
@Ms.Nehal 我删除了这个问题,因为我的代码有一些错误
-
将
attractieID保存在变量中,例如$preID并将其更新为$prevEnd然后在if($prevEnd !== null && $startHour < $prevEnd && $currentID == $preID) -
@MuhammadKashifAbbasi
$currentID应该是什么? -
atr 每次都重置
$foundOverlap = true;。每次使用$foundOverlap = false;到你的 foreach 循环。