【问题标题】:php string to intphp字符串到int
【发布时间】:2011-10-23 21:44:59
【问题描述】:
$a = '88';
$b = '88 8888';

echo (int)$a;
echo (int)$b;

正如预期的那样,两者都产生 88。任何人都知道是否有一个字符串到 int 函数将适用于 $b 的值并产生 888888?我用谷歌搜索了一下,没有运气。

谢谢

【问题讨论】:

  • 您期望 $b 的 int 值是多少? 888888?
  • PHP 在将字符串转换为整数时不遵循ISO standard 31-0。 PHP 有自己的规范,在此概述:String conversion to numbers.

标签: php string int


【解决方案1】:

您可以在转换为int之前删除空格:

(int)str_replace(' ', '', $b);

另外,如果你想去掉其他常用的数字分隔符(如,),你可以给函数一个数组(但要注意——在某些国家,比如我的国家,逗号用于分数符号):

(int)str_replace(array(' ', ','), '', $b);

【讨论】:

  • 或者如果你想删除所有非数字字符 (int)preg_replace('#[^0-9]+#', '', $b);
  • 注意 (int),支持的最大值是 2147483647,所以如果你有 (int)2222222222 它将返回 2147483647
【解决方案2】:

如果你只想留下数字 - 使用 preg_replace 像:(int)preg_replace("/[^\d]+/","",$b)。

【讨论】:

    【解决方案3】:

    你甚至希望结果是什么? 888888?如果是这样,只需删除带有str_replace 的空格,然后转换。

    【讨论】:

      【解决方案4】:

      替换空白字符,然后将其转换(使用 intval 函数或通过常规类型转换)

      intval(str_replace(" ", "", $b))
      

      【讨论】:

        【解决方案5】:

        先用str_replace去掉空格?

        【讨论】:

          【解决方案6】:

          当你像这样声明你的变量 $b 时,你可以使用str_replace

          $b = str_replace(" ", "", '88 8888');
          echo (int)$b;
          

          或者最好的解决方案是使用 intval :

          $b = intval(str_replace(" ", "", '88 8888');
          echo $b;
          

          如果您的值“88 888”来自其他变量,只需将“88 888”替换为包含您的字符串的变量即可。

          【讨论】:

            猜你喜欢
            • 2011-08-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-17
            • 2019-06-23
            • 2010-11-16
            相关资源
            最近更新 更多