0

我有以下数据。

$96.2k
$75.2k
$44.4k
$35.6k
Etc.......

我想要做的是替换小数点和小数点后的任何数字。然后我想将整数四舍五入到最接近的十分之一。

我所有的数据都介于10k90k

所以预期的输出将是..

$100k
$80k
$40k
$40k

我知道我可以preg_replace('/\.[0-9]+/', '', $data);用来删除小数和数字,但我不能使用普通的 preg_replace 函数吗?

4

2 回答 2

2
<?php

$number = '$96.2k';

$number = str_replace(array('$', 'k'), '', $number);
$number = round($number, -1); // -1 rounds to nearest 10

echo '$' . $number . 'k';
// $100k    

?>

更多关于回合的信息:http: //php.net/manual/en/function.round.php

于 2013-11-06T03:25:56.240 回答
1

而不是使用preg_replace,我会使用preg_replace_callback

$data = preg_replace_callback('/([0-9]+)\.[0-9]+/',   # capture first group of digits
      function($m) {                                  # $m is your captured match
         return round($m[1], -1);                     # round our captured match
      }, $data);

会将您的匹配 ( $m) 舍入到最接近的 10。看看round参数的使用。

working demo

于 2013-11-06T03:26:36.850 回答