gpt4 book ai didi

php - 比较数组值并根据自定义值查找数组中的下一个值 (PHP)

转载 作者:行者123 更新时间:2023-12-03 23:03:25 24 4
gpt4 key购买 nike

我正在尝试比较数组中的值并根据所选值选择数组中的下一个值。

例如

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;
}

更新也许我应该以某种方式将数组中的值转换为更便于在其中搜索的值 - 只是一个想法。

最佳答案

使用内部指针数组迭代器——从性能的角度来看,它应该比 array_search 更好——你可以像这样获得下一个值:

$arr = array('05:11','05:21','05:24','05:31','05:34','05:41','05:44','05:50','05:54');
function getClosest($search, $arr) {

$item = null;
while ($key = key($arr) !== null) {
$current = current($arr);
$item = next($arr);
if (
strtotime($current) < strtotime($search) &&
strtotime($item) >= strtotime($search)
) {
break;
} else if (
strtotime($current) > strtotime($search)
) {
$item = $current;
break;
}
}

return $item;
}

print_r([
getClosest('05:50', $arr),
getClosest('05:34', $arr),
getClosest('05:52', $arr),
getClosest('05:15', $arr),
getClosest('05:10', $arr),
]);

这将输出:-

Array (
[0] => 05:50
[1] => 05:34
[2] => 05:54
[3] => 05:21
[4] => 05:11
)

实例 https://3v4l.org/tqHOC

关于php - 比较数组值并根据自定义值查找数组中的下一个值 (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52493269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com