带strlen的substr

时间:2011-08-26 10:52:16

标签: php substr strlen

我的数量 0003000 ,最后2位是十进制数。我想将 0003000 转换为 00030,00 (在最后2位前面插入一个小数点后的逗号)。 我尝试用substring做这个。我用strlen取字符串的长度然后我做-2,但它忽略了-2。

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

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

7 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分: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)

答案 3 :(得分:2)

您还可以执行以下操作:

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

echo number_format("0003000" / 100, 2, ',', ''); // output: 30,00

答案 4 :(得分:1)

使用number_format()代替。这很容易使用。

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

答案 5 :(得分:0)

您可以使用number_format

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

或更正您的代码。

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

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

答案 6 :(得分:0)

这样吗?

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