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

时间:2016-04-21 05:37:04

标签: 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;
}

它的工作但是,我感觉不太好。

2 个答案:

答案 0 :(得分:1)

function roundDown($count) {
  foreach ([100, 50, 25, 15, 10, 5, 1] as $limit) {
    if ($count >= $limit) {
      return $limit;
    }
  }
  return $limit;
}

感觉更好?

答案 1 :(得分:1)

此:

return max(array_filter([100, 50, 25, 15, 5, 1], function ($x) use ($count) { return $x < $count; }) ?: [1]);

碰巧也有效,但它不是特别易读。