【问题标题】:php if is bigger thanphp 如果大于
【发布时间】:2012-09-19 21:11:58
【问题描述】:

我遇到了 php 的问题,我只是不明白,

这是我的代码

$pieces = explode("|", $result);
if (count($pieces) == 3){
    $size = $pieces[2];
    echo "here";
    if($bw>=$pieces[2]){
        $manfi = $bw - $pieces[2];
        echo "<br>$manfi<br>";
        echo $size;
    }
    else{
        echo "is not big!!!";echo $size."aaa". $bw;
   }

这是输出

这里不大!!!183773480 aaa 1000000000000000

我只是想不通,这个数字 1000000000000000 怎么小于 183773480?

【问题讨论】:

  • 导致 1000000000000000 溢出 PHP 使用的正常 32 位大小的 int。
  • 您确定您的值实际上是数字而不是字符串吗?
  • @j08691 $pieces = explode("|", $result); 对我来说似乎是字符串。
  • @j08691 是对的,尝试强制转换为int,例如:(int)$pieces[2];
  • 没错。 intval 也可以。

标签: php if-statement logic


【解决方案1】:

问题是数字1000000000000000 是数据类型字符串。如果然后将其与整数进行比较,它将被转换为整数。由于1000000000000000 溢出了 PHP 使用的 32 位整数,因此它将成为负值。

【讨论】:

    【解决方案2】:

    尝试:

    $bw = intval($bw);
    $pieces = array_map(intval, explode("|", $result));
    if (count($pieces) == 3){
        $size = $pieces[2];
        echo "here";
        if($bw>=$pieces[2]){
            $manfi = $bw - $pieces[2];
            echo "<br>$manfi<br>";
            echo $size;
        }else{
            echo "is not big!!!";echo $size."aaa". $bw;
        }
    }
    

    我更改了 $pieces 以便它包含一个整数数组,并且我还确保 $bw 包含一个整数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多