如何在数组中找到小于和最接近数字X的数字?

时间:2015-10-27 06:46:48

标签: php arrays sorting search

例如我有数组:

Array(
  [0] => 15
  [1] => 6
  [2] => 19
  [3] => 21
  [4] => 18
)

如果当前时间是20,那么我需要值19(小于且接近20)

同样,如果我将X数字传递为17,它将从数组中返回15。

如果是7那么它应该返回6.

请建议如何使用PHP实现这一目标?

谢谢!

3 个答案:

答案 0 :(得分:1)

您可以使用array_filterend功能创建自定义功能,如

function find_closest($arr,$x){
    sort($arr);
    $filtered_array = array_filter($arr,function($v)use($x){ 
        return $v < $x;
    });
    return count($filtered_array) > 0 ? end($filtered_array) : "Your Message";
}

echo find_closest($arr,17);

Demo

答案 1 :(得分:1)

我会按照以下方式进行。我认为这比接受的答案更清洁(也可能更快):

function closest($arr, $x) {
    $result = "default";
    sort($arr);

    foreach($arr as $value) {
        if($value < $x) {
            $result = $value;
        } else
            break;
    }
    return $result;
}

答案 2 :(得分:0)

在阵列中推送您要查找的元素。

array_push($your_array, "17");
$arr = asort($your_array);
$key = array_search('17', $arr); 

该值将在 $ arr [$ key-1] 中。 希望这会帮助你。