是否有更好/更優雅/更有效的方式來做到這一點?最近的關鍵匹配搜索陣列
我有一個數組,我在搜索鍵的值,要麼匹配或小於搜索值最大的價值。希望這是有道理的。
我現在的方法是有點蠻力嘗試是罰款數據的小集合,但此功能需要一個大陣多次運行的。
$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