是否有更好/更优雅/更有效的方式来做到这一点?最近的关键匹配搜索阵列
我有一个数组,我在搜索键的值,要么匹配或小于搜索值最大的价值。希望这是有道理的。
我现在的方法是有点蛮力尝试是罚款数据的小集合,但此功能需要一个大阵多次运行的。
$needle = '2013-04-04';
$haystack = array (
'2013-01-01' => 1,
'2013-04-03' => 2,
'2013-04-05' => 3,
'2013-07-23' => 4,
'2013-09-12' => 5,
'2013-10-18' => 6,
'2013-11-01' => 7
);
krsort($haystack);
foreach ($haystack as $k => $v)
{
$possibleMatch = $k;
if ($needle >= $k) break;
}
return $possibleMatch
在此先感谢
数组是否总是排序? –
如果数组已排序或可以排序,则使用二分查找。无论采用哪种方式,都应考虑找到小于或等于探针的最大关键点。 –
不是最初的,但它可以。它从mysql数据库中检索。 – Gavin