PHP:从数组中获取两个最近邻?

PHP:从数组中获取两个最近邻?,php,arrays,Php,Arrays,我发现了如何根据已知值从数组中选择最近/最近的值。如果要从一个数组中选择两个最接近的值,比如说同一个数组,该怎么办 $rebates = array( 1 => 0, 3 => 10, 5 => 25, 10 => 35) 您所说的“两个最近的”是指小于或等于$items价值的两个 不管怎样,从另一条线索的答案开始 $percent = $rebates[max(array_intersect(array_keys($rebates),range

我发现了如何根据已知值从数组中选择最近/最近的值。如果要从一个数组中选择两个最接近的值,比如说同一个数组,该怎么办

$rebates = array(
   1 => 0,
   3 => 10,
   5 => 25,
  10 => 35)

您所说的“两个最近的”是指小于或等于$items价值的两个

不管怎样,从另一条线索的答案开始

$percent = $rebates[max(array_intersect(array_keys($rebates),range(0,$items)))];
你可以去

$two_nearest = array_slice(array_intersect(array_keys($rebates),range(0,$items)), -2);
$most_near = $rebates[$two_nearest[1]];
$less_near = $rebates[$two_nearest[0]];
使用
array\u map
可以将其简化为一行,但我认为这已经有些过头了。

所说的“两个最近的”是指小于或等于$items值的两个

$rebates = array(
   1 => 0,
   3 => 10,
   5 => 25,
  10 => 35)

$distances = array();
foreach($rebates as $key=>$item) {
    if ($key == 5) continue;
    $distances = abs($rebates[5] - $item);
}

sort($distances, SORT_NUMERIC)
不管怎样,从另一条线索的答案开始

$percent = $rebates[max(array_intersect(array_keys($rebates),range(0,$items)))];
你可以去

$two_nearest = array_slice(array_intersect(array_keys($rebates),range(0,$items)), -2);
$most_near = $rebates[$two_nearest[1]];
$less_near = $rebates[$two_nearest[0]];
使用
array\u map
,这可能会简化为一行程序,但我认为这已经有些过头了

$rebates = array(
   1 => 0,
   3 => 10,
   5 => 25,
  10 => 35)

$distances = array();
foreach($rebates as $key=>$item) {
    if ($key == 5) continue;
    $distances = abs($rebates[5] - $item);
}

sort($distances, SORT_NUMERIC)
现在,您有了一个数组,该数组中的所有项目与$rebates[5]之间的距离都已排序。所以你可以得到两个最接近的。 或者三个最近的。不管怎样

请记住,两个项目可以有相同的距离

现在,您有了一个数组,该数组中的所有项目与$rebates[5]之间的距离都已排序。所以你可以得到两个最接近的。 或者三个最近的。不管怎样


请记住,两个项目可以有相同的距离。

条件要求用括号括起来
&
。别担心,我喜欢你的诚实:)条件要求用括号括起来
&
。别担心,我喜欢你的诚实:)