【问题标题】:substr with strlen带有 strlen 的 substr
【发布时间】:2011-08-26 10:52:16
【问题描述】:

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

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

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

【问题讨论】:

    标签: php substr strlen


    【解决方案1】:

    这是因为您的 -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)
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        在这种情况下你不需要strlen(),试试:

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

        【讨论】:

          【解决方案4】:

          您还可以执行以下操作:

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

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              【解决方案6】:

              你可以使用 number_format

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

              或更正您的代码。

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

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

              【讨论】:

                【解决方案7】:

                这样吗?

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-09-26
                  • 2015-12-01
                  • 1970-01-01
                  • 2020-06-05
                  相关资源
                  最近更新 更多