получить наименьшее значение в массиве на основе переменной - PullRequest
2 голосов
/ 17 января 2020

Я изо всех сил пытаюсь получить наименьшее значение, основываясь на ответе клиента.

$client_answer = 28;

$array = array(10,20,30,40,50);

Ответ, который следует дать: 20

Таким образом, каждый ответ должен быть округлен в меньшую сторону. на меньшее число.

Другие примеры:

$client_answer = 37;

$array = array(10,20,30,40,50);

ответ должен быть 30.


$client_answer = 14;

$array = array(10,20,30,40,50);

ответ должен быть 10.


$client_answer = 45;

$array = array(10,20,30,40,50);

ответ должен быть 40.


Есть ли функция php, которую я могу использовать для этого?

Если нет, как это можно сделать?

Ответы [ 3 ]

6 голосов
/ 17 января 2020

Вы можете отфильтровать массив так, чтобы он содержал только значения, равные или меньшие заданному значению $client_answer, затем используйте max() в отфильтрованном массиве.

$value = max(array_filter($array, function($v) use ($client_answer) {
    return $v <= $client_answer;
}));
0 голосов
/ 17 января 2020

Только при правильном округлении

$client_answer = 28;
$array = array(10,20,30,40,50);
rsort($array,1);
$min_diff = max($array);
$closest_val = max($array);

foreach($array as $val)
{
    if(abs($client_answer - $val) < $min_diff)
    {
        $min_diff = abs($client_answer - $val);
        $closest_val = $val;
    }

}
echo $closest_val;
0 голосов
/ 17 января 2020

Это может быть очень глупый ответ, но в данном конкретном случае c вы пытаетесь урезать номер устройства? Почему бы не попробовать это:

$client_answer = intdiv( $client_answer, 10) * 10;

Разделите на 10, избавьтесь от последнего di git и снова умножьте. РЕДАКТИРОВАТЬ: опечатка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...