这个PHP舍入可以写得更优雅吗?

这个PHP舍入可以写得更优雅吗?,php,Php,我们希望将一个整数舍入为至少1到1、5、15、25、50、100。这就是我想到的: function roundDown($count) { $prev = 1; foreach ([5, 15, 25, 50, 100] as $limit) { if ($count < $limit) { return $prev; } $prev = $limit; } return 100; } 函数取整($count){ $prev=1; 外

我们希望将一个整数舍入为至少1到1、5、15、25、50、100。这就是我想到的:

function roundDown($count) {
  $prev = 1;
  foreach ([5, 15, 25, 50, 100] as $limit) {
    if ($count < $limit) {
      return $prev;
    }
    $prev = $limit;
  }
  return 100;
}
函数取整($count){
$prev=1;
外汇([5,15,25,50,100]美元限额){
如果($count<$limit){
返回$prev;
}
$prev=$limit;
}
返回100;
}
它起作用了,但我感觉不太好

function roundDown($count) {
  foreach ([100, 50, 25, 15, 10, 5, 1] as $limit) {
    if ($count >= $limit) {
      return $limit;
    }
  }
  return $limit;
}
感觉好些了吗?

这是:

return max(array_filter([100, 50, 25, 15, 5, 1], function ($x) use ($count) { return $x < $count; }) ?: [1]);
返回最大值(数组_过滤器([100,50,25,15,5,1],函数($x)使用($count){return$x<$count;}):[1]);

碰巧也有用,但不是特别可读。

这是我看到的新东西。函数参数中的偏执?我还对
$count(
?解析错误:语法错误,/var/www/html/public//test.php第3行“它可以工作,但是”中的意外“(”,预期“)”感到困惑不,它不起作用,他只是在那里放错了括号。解决方案看起来很适合你所要找的。下面的答案让它更优雅一些。你可能可以在结尾只返回1,因为$limit看起来超出了范围,或者在那里不是很好。因为我们知道$count至少是1,第二次返回是不必要的。我一定是半睡半醒了不要想那个。@MarkSkayff嗯,是的,但这种方式将“1”抽象为。避免了关联。无论哪种方式都很小。但实际上,正如前面提到的,只有当所述的precd$count>=1不成立时,返回才会被命中。我的解决方案是15分打印15,而不是25分。你链接的站点很有趣或是其他什么。哦,我的糟糕。有一个拼写错误,抱歉