【发布时间】:2021-04-13 11:15:53
【问题描述】:
我需要将当前时间与数组中的时间进行比较,并相应地返回相关值。 所以我有这样的数组:
$class[0]["start"] = 80000;
$class[0]["end"] = 80500;
$class[0]["title"] = "Warmup";
$class[1]["start"] = 80501;
$class[1]["end"] = 85000;
$class[1]["title"] = "1. class";
$class[2]["start"] = 85001;
$class[2]["end"] = 90000;
$class[2]["title"] = "Break";
我需要将它与当前时间进行比较:
$time = (int) date('Gis');
我可以像这样硬编码:
if($time >= $class[1]["start"] && $time <= $class[1]["end"]) {
$title = $class[1]["title"];
} elseif($time >= $class[2]["start"] && $time <= $class[2]["end"]) {
$title = $class[2]["title"];
etc ...
但我相信有更好的方法来返回类的“标题”,而无需编写数百行 elseif。
有什么想法吗?
感谢
马洛斯
【问题讨论】:
-
您似乎正在寻找
end大于当前值的第一个值? -
是的,这也是一个观点......嗯......现在我找不到任何方法在多数组中搜索它,但我需要一些时间来谷歌它......
-
当然,我可以根据自己的意愿更改数组,所以也许这会让我更接近......
-
在
$class数组上的一个简单的foreach可以做到这一点。 -
为什么会比直接循环更优雅?仅仅因为它占用的线路更少?力求清晰高效的代码,而不是单行奇迹。您可以在找到结果后立即跳出循环,而不是使用将遍历整个数组的数组函数。我会编写一个自定义函数来执行此操作并从中返回。