数组中最接近参考值的值

时间:2015-01-22 16:14:14

标签: php arrays

我有一个包含相关“左”或“右”值的时间戳的数组:

array (size=237)
  1421439428 => string 'left' (length=4)
  1421439411 => string 'right' (length=5)
  1421439392 => string 'left' (length=4)
  [here goes the example TS from below]
  1421439380 => string 'right' (length=5)
  1421439358 => string 'left' (length=4)
  1421439329 => string 'right' (length=5)
  1421439240 => string 'right' (length=5)
  1421439234 => string 'left' (length=4)

现在我想给一个时间戳,例如1421439391(那是或不在键中)我想知道,最近的值是多少。在这种情况下“正确”。即使它更接近左边值我想知道下面的值!

这怎么可能(没有循环)?

使用循环(基于Alex W链接的功能):

function closest($array, $number) {  
  foreach ($array as $key=>$val) {
    if ($key <= $number) return $val;
  }
  return end($array); // or return NULL;
}

1 个答案:

答案 0 :(得分:1)

显然,为了使其尽可能高效,您首先要按时间戳对数组进行排序。然后,您需要编写自己的closest函数,例如this one

由于你说你不想使用循环,这是你通常会这样做的,你必须为数组索引实现某种散列函数,使数组按顺序排序时间戳值。然后,您可以插入时间戳值(如果它不存在),然后转到下一个数组索引。