3

我有一个像0003000这样的金额,最后 2 位数字是十进制数。我想将 0003000转换为00030,00(在最后 2 位数字前插入一个小数点逗号)。我试图用子字符串来做到这一点。我用 strlen 取字符串的长度,然后制作 -2,但它忽略了 -2。

这是一个例子,为什么它被忽略了?

substr($this->arrCheck['amountsum'],0,(strlen($this->arrCheck['amountsum']-2)))
4

7 回答 7

2

-2 后面有 strlen 右括号。尝试:

substr($this->arrCheck['amountsum'],0,(strlen($this->arrCheck['amountsum'])-2))
于 2011-08-26T10:55:24.127 回答
2

在这种情况下您不需要strlen(),请尝试:

substr($this->arrCheck['amountsum'], 0, -2) . ',' . substr($this->arrCheck['amountsum'], -2)
于 2011-08-26T10:56:11.787 回答
2

这是因为你-2在 strlen 函数中而不是在它之外:

strlen($this->arrCheck['amountsum']-2)

应该:

strlen($this->arrCheck['amountsum'])-2

但总而言之,您不需要使用 strlen,因为 substr 接受一个负数作为字符串结尾之前的字符数:PHP Manual

因此,您上面的整个代码可以替换为:

substr($this->arrCheck['amountsum'], 0, -2)

整个事情可以通过以下方式实现:

substr($this->arrCheck['amountsum'], 0, -2).','.substr($this->arrCheck['amountsum'], -2)
于 2011-08-26T10:58:48.303 回答
2

您还可以执行以下操作:

echo substr_replace("0003000", ",", -2, 0); // output: 00030,00

echo number_format("0003000" / 100, 2, ',', ''); // output: 30,00
于 2011-08-26T11:04:56.197 回答
1

改用 number_format() 。这将很容易使用。

http://www.w3schools.com/php/func_string_number_format.asp

于 2011-08-26T11:01:08.807 回答
0

您可以使用 number_format

http://php.net/manual/en/function.number-format.php

或更正您的代码。

substr($this->arrCheck['amountsum'],0,(strlen($this->arrCheck['amountsum']) -2))

您不能将 -2 放入 strlen() 函数

于 2011-08-26T10:55:48.930 回答
0

这边走 ?

substr($this->arrCheck['amountsum'], 0, -2).','.substr($this->arrCheck['amountsum'], -2);
于 2011-08-26T10:58:14.170 回答