php 中数组搜索的计算

computation on array-search in php

我有一个像这样的多维数组:

   array ( 'JD'=>2457002.50, 67.618536), 
   array ( 'JD'=>2457003.50, 67.619705), 
   array ( 'JD'=>2457004.50, 67.620938)....

我有一个值说:

$MyJD = 2457003.9553;

我想在数组中找到值,如果没有,匹配最接近问题数组的数字,return 下一个索引(我假设是 [1])

我想做一个 array_search,但找不到确切的数字,我想要最接近 $MyValue 的数字?

bucle 把新数组放在不同的键之间 通过这种方式,您将获得按差异排序的数组 在每次迭代中 $myarray[myvalue - yourvalueinbucle] if -1 this key then ×-1 and how value your enter iterator of bucle, then your value for this key = your line multiarrayvalue in for each iterator

这不会 return 索引,但 return 正确的数组:

array_multisort(array_map(function($v) use($MyJD) {
                              return abs($v['JD'] - $MyJD);
                          }, $array), $array);
$result = reset($array);
  • 计算每个JD值与$MyJD
  • 的差值
  • 按差值排序(排序原来的),取最低的(第一个)

或者,您可以使用差异作为键进行组合,然后对键进行排序:

$array = array_combine(array_map(function($v) use($MyJD) {
                                     return abs($v['JD'] - $MyJD);
                                 }, $array), $array);
ksort($array);
$result = reset($array);

也许有人会 post 一个好的 array_reduce 答案。