复制number_format

时间:2011-02-24 22:18:20

标签: php

我正在寻找一种方法来复制number_format()(存在于php中)。

例如

 1234 => 1,234
 10000 => 10,000
 1000000 => 100,000

我正在使用的语言不支持列表/数组/正则表达式,所以我愿意接受任何建议。我以前的代码似乎只适用于10000000(10,000,000)这样的数字,但是当我使用1000这样的数字时,它很遗憾地给了10,00。

php中的一个例子可以正常工作,所以我可以翻译它。

由于

4 个答案:

答案 0 :(得分:2)

另一种方法:

function number_format($num){
  $len=strlen( (string)$num );
  $newnum='';
  for ($i=$len; $i>=0; --$i) {
    $newnum=$num{$i}.$newnum;
    if (!$i%3 && $i) {
      $newnum=','.$newnum;
    }
  }
  return (int)$newnum;
}

答案 1 :(得分:2)

这是Kae Verens功能的工作版本。

function number_format($num){
  $num=(string)$num;
  $len=strlen($num);
  $newnum='';
  for ($i=0; $i<$len; ++$i) {
    if (($i%3==0) && $i) {
      $newnum=','.$newnum;
    }
    $newnum=$num[$len-$i-1].$newnum;
  }
  return $newnum;
}

答案 2 :(得分:0)

这样的事情可能有效(未经测试):

function number_format($num){
  $num=(string)$num;
  while (preg_match('/[^,][0-9]{3}[,$]/', $num) {
    $num=preg_replace('/([^,])([0-9]{3})[,$]/', '\1,\2', $num);
  }
  $num=preg_replace('/^([0-9]),/', '\1', $num);
  return $num;
}

答案 3 :(得分:-1)

$number = 10000000;
echo number_format($number, 0, '', ',');