在 php 数组中选择最接近的大/小元素


Select nearest greater/lesser elements in php array

我有以下内容

$a = [100, 90, 80, 70, 60, 50, 40, 30, 20, 10]

$v = 45

我需要简单的方法来找到$a中最接近的大/小$v元素

有什么想法吗?

编辑

这就是为什么我不喜欢我的想法

<?php
    $a = [100, 90, 80, 70, 60, 50, 40, 30, 20, 10];
    $v = 45;
    $a[] = $v;
    sort($a);
    $nearestGreater = null;
    $nearestLower = null;
    foreach ($a as $key => $val) {
        if ($val == $v) {
            $nearestGreater = (isset($a[$key + 1])) ? $a[$key + 1] : $nearestGreater;
            $nearestLower = (isset($a[$key - 1])) ? $a[$key - 1] : $nearestLower;
            break;
        }
    }
    var_dump($nearestGreater);
    var_dump($nearestLower);
    unset($a); 

这段糟糕的代码是我的,正在工作,但我需要知道是否有更好的解决方案(更简单)。我不是天生手里拿着PHP书的,我还在学习。如果你不喜欢我的问题,请跳过它。我不需要你傲慢的回答。
返回业务
任何人都可以改进此代码以使其运行得更快?假设$a我的数据库中有 2000000 行。
谢谢大家。

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

从 查找数组中大于或等于 N 的数字