为了账号安全,请及时绑定邮箱和手机立即绑定

根据变量获取数组中的最小值

根据变量获取数组中的最小值

PHP
波斯汪 2022-07-22 17:20:51
我正在努力根据客户的回答获得最低价值。$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 回答

?
MM们

TA贡献1886条经验 获得超2个赞

您可以过滤数组以仅包含等于或低于给定值的值$client_answer,然后max()在过滤后的数组上使用。


$value = max(array_filter($array, function($v) use ($client_answer) {

    return $v <= $client_answer;

}));

在https://3v4l.org/KHB8r进行现场演示


查看完整回答
反对 回复 2022-07-22
?
SMILET

TA贡献1796条经验 获得超4个赞

只有这轮正确


$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;


查看完整回答
反对 回复 2022-07-22
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

这可能是一个非常愚蠢的答案,但在这种特定情况下,您试图截断单元号?为什么不试试这个:

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

除以 10,去掉最后一位,再乘一次。编辑:错字


查看完整回答
反对 回复 2022-07-22
  • 3 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信