【发布时间】:2019-02-28 18:54:40
【问题描述】:
我正在尝试比较数组中的一个值并根据所选值选择数组中的下一个值。
例如
array(05:11,05:21,05:24,05:31,05:34,05:41,05:44,05:50,05:54);
如果搜索值为例如05:34,则返回为05:41。如果值为05:50,则返回05:54
我确实在 this post 上找到了可能对我有帮助的东西,但由于我的值中有 :,它不会起作用。
有什么想法可以让它工作吗?
function getClosest($search, $arr) {
$closest = null;
foreach ($arr as $item) {
if ($closest === null || abs($search - $closest) > abs($item - $search)) {
$closest = $item;
}
}
return $closest;
}
更新 也许我应该以某种方式将数组中的值转换为更方便搜索的方式 - 只是一个想法。
【问题讨论】:
-
你应该把数组值用引号括起来
-
因为这是字符串,所以 abs 不能按预期工作。也许您可以在执行 foreach 之前使用 strtotime (或类似的东西)将它们转换为更有意义的东西
-
是的,这就是我编辑帖子时的想法。或者可能只是删除“:”,然后如果我输入 0535,它将返回 0541。这有意义吗?
-
@lStoilov 你只想得到给定值的下一项?
-
@Mohammad,是的,没错