我正在努力根据客户的回答获得最低价值。$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进行现场演示
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;
哈士奇WWW
TA贡献1799条经验 获得超6个赞
这可能是一个非常愚蠢的答案,但在这种特定情况下,您试图截断单元号?为什么不试试这个:
$client_answer = intdiv( $client_answer, 10) * 10;
除以 10,去掉最后一位,再乘一次。编辑:错字
- 3 回答
- 0 关注
- 97 浏览
添加回答
举报
0/150
提交
取消