elseif 值小于获取值或大于

elseif value is less than getting value or greater than

我正在尝试显示 echo 2 但它不起作用

$zipcode1 = 07300-011;
  $zipcode= str_replace("-","",$zipcode1);
$zipcode = 07300011;
   if ($zipcode >= 20000000 && $zipcode <= 26600999) { 
     echo '1';
}
   elseif ($zipcode >= 07000001 && $zipcode <= 07399999) { 

     echo '2';
}
else {
    echo 'no value';
    }
    

请告诉我哪里做错了。感谢您的帮助 结果 = 2

如果邮政编码的前导 0 很重要,则需要将字符串与字符串进行比较:

$zipcode1 = "07300-011";
$zipcode= str_replace("-","",$zipcode1);
$zipcode = "07300011";
if ($zipcode >= "20000000" && $zipcode <= "26600999") { 
    echo '1';
} elseif ($zipcode >= "07000001" && $zipcode <= "07399999") { 
    echo '2';
} else {
    echo 'no value';
}

你犯了两个错误。

一个是赋给$zipcode1的值不是字符串,而是算术运算的结果。我是说 $zipcode1 不是 "07300-011",而是 07300-011,它等于 octal number 73003776 以 10 为基数)减去八进制 119 in base 10),即 3776 - 93767.

第二个是您正在尝试使用字符串进行数字比较。 "20" > "1000"20 > 1000 不同。第一个将解析为 true,而第二个将给出 false(这可能是您想要的)。 要解决此问题,您必须先将它们都转换为数字。您可以投射它们:

((int) $zipcode1) > (int) $zipcode2

或者您可以使用 + 符号代替:

(+$zipcode1) > (+$zipcode2)

在这两种情况下,您都需要先从邮政编码中删除空格和所有其他 non-numeric 个字符。

$zipcode = str_replace([' ', '-'], '', $zipcode);

阅读 php 文档中的以下主题以获取更多信息:

  1. Numeric Strings
  2. Comparison Operators