我有一个像0003000这样的金额,最后 2 位数字是十进制数。我想将 0003000转换为00030,00(在最后 2 位数字前插入一个小数点逗号)。我试图用子字符串来做到这一点。我用 strlen 取字符串的长度,然后制作 -2,但它忽略了 -2。
这是一个例子,为什么它被忽略了?
substr($this->arrCheck['amountsum'],0,(strlen($this->arrCheck['amountsum']-2)))
-2 后面有 strlen 右括号。尝试:
substr($this->arrCheck['amountsum'],0,(strlen($this->arrCheck['amountsum'])-2))
在这种情况下您不需要strlen()
,请尝试:
substr($this->arrCheck['amountsum'], 0, -2) . ',' . substr($this->arrCheck['amountsum'], -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)
您还可以执行以下操作:
echo substr_replace("0003000", ",", -2, 0); // output: 00030,00
echo number_format("0003000" / 100, 2, ',', ''); // output: 30,00
改用 number_format() 。这将很容易使用。
您可以使用 number_format
http://php.net/manual/en/function.number-format.php
或更正您的代码。
substr($this->arrCheck['amountsum'],0,(strlen($this->arrCheck['amountsum']) -2))
您不能将 -2 放入 strlen() 函数
这边走 ?
substr($this->arrCheck['amountsum'], 0, -2).','.substr($this->arrCheck['amountsum'], -2);