【问题标题】:Cast string to integer in PHP在 PHP 中将字符串转换为整数
【发布时间】:2015-08-25 12:36:11
【问题描述】:

我一直试图在 PHP 中将 string 转换为 int 以对其进行操作,但 PHP 一直将其解释为 0。

var_dump ($Pux); // output: string (6) "89"

我尝试了几种方法,例如

(int) $Pux,
intval($Pux)
settype($Pux, "integer")

但他们都给我 0 而不是 89。

这应该怎么做?

【问题讨论】:

  • @ManuelRamos:你确定空间一开始就没有导致你的错误吗?
  • intval($Pux) 似乎对我有用。您确定这是您正在运行的确切代码吗?
  • 如果你正在投射,你必须重新分配那个投射的结果:$pux = (int) $pux;,这应该可以正常工作。不要忘记在任何给定时间检查gettype($pux);。您可能稍后会转换类型
  • 回滚编辑,因为我怀疑这是导致此问题的真正原因。
  • string __(6)__ "89" 4 个不可见字节是什么?

标签: php string casting int


【解决方案1】:

如果您不在$varname 之间放置空格并将转换结果分配给变量,则没有问题。

<?php 
    $Pux = "89";
    var_dump ($Pux);
    $t = (int)$Pux;
    var_dump ($t);
?>

输出 =

string(2) "89"
int(89)

【讨论】:

  • var_dump():string (6) "89" 看到那 6 个。他们可能在那里有一些html标签或隐藏字符,这可能是它失败的原因。
  • 嗯,听起来可能。
  • @Rizier123 好吧,我只是尝试添加空格,然后是 alphas,然后是奇数 ALT+12、ALT+13、ALT+14 类型的字符,它仍然可以正常工作。我可以尝试任何其他建议。
  • html 标签,例如$str = "&lt;xx&gt;89";
  • @Rizier123 是的,当然,把垃圾放在字符串的前面,效果很好 BANG
【解决方案2】:

将字符串转换为数字的最简单方法:-

<?php
$Pux = "89"; // Or any other number
$Num = (int) $pux;
?>

如果您仍然得到零,则数字前面可能会有一些奇怪的、不可见的字符。对此进行测试:-

回声“($Pux)”;

【讨论】:

  • 您正在处理变量区分大小写的权利
  • OP 注释了$Pux 之间的空格在实际代码中不存在
【解决方案3】:

您可以通过两种方式将字符串转换为整数:

Typecastingintval function

<?php
 $pux = "89";
 var_dump($pux);
 $pux = (int) $pux;
 var_dump($pux);
 $pux = "89";
 $pux =  intval($pux);
 var_dump($pux);
?>

【讨论】:

    【解决方案4】:

    下面的代码去掉了非数字字符::

    function numeric( $st_data )
        {
            $st_data = preg_replace("([[:punct:]]|[[:alpha:]]| )",'',$st_data);
            return $st_data;    
        }
    

    【讨论】:

    • 最好使用 \D 或 [^0-9] 进行搜索,因为这匹配所有非数字。
    【解决方案5】:

    由于var_dump($Pux); 输出string(6) "89"(不是string(2)),这意味着您的字符串包含6 个符号,我认为它们是4 个单括号(')89。所以试着从你的字符串中删除括号:

    $Pux = str_replace("'", '', $Pux);

    或者也去掉双括号(为了安全起见)

    $Pux = strtr($Pux, array("'" =&gt; '', '"' =&gt; ''));

    已编辑

    最好删除所有非数值:

    $Pux = preg_replace("/[^0-9,.]/", "", $Pux);
    

    然后转换为整数。

    谢谢。

    【讨论】:

    • $PUx = strtr($PUx, array("'" => '', '"' => '')); $aux = intval($PUx); var_dump($aux) ; 输出:int(0)
    • @ManuelRamos ,返回: $PUx = strtr($PUx, array("'" => '', '"' => '')); var_dump($PUx); ?
    • 输出:字符串(6)“89”
    • @ManuelRamos 请运行此代码并分享结果 for($i = 0; $i '; }
    • 字符串(1)“”字符串(1)“8”字符串(1)“9”
    【解决方案6】:

    我也犯了同样的错误。 确实,当我执行 var_dump($myvar) 时。 它返回字符串(2)“89” 当我完成所有演员阵容时,它返回给我 0。 我搜索,最后答案就在这个页面上。 所以我和你分享我学到的东西。 您只需执行 php 正则表达式:$myvar = preg_replace("/[^0-9,.]","",$myvar)。它会删除字符串中的所有非数字(在我的情况下是字符串(2))。

    【讨论】:

    • 我最后错过了一个 / 正则表达式 $myvar = preg_replace("/[^0-9,.]/","",$myvar)
    • 您可以随时编辑您的答案。
    猜你喜欢
    • 2010-11-05
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    相关资源
    最近更新 更多