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]之间的距离都已排序。所以你可以得到两个最接近的。
或者三个最近的。不管怎样
请记住,两个项目可以有相同的距离。条件要求用括号括起来
(
&)
。别担心,我喜欢你的诚实:)条件要求用括号括起来(
&)
。别担心,我喜欢你的诚实:)