比较字符串数字

时间:2014-01-23 21:03:31

标签: php string comparison numeric

在php.net中写道如下:

  

如果您将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都会转换为数字,并且数字会进行比较。这些规则也适用于switch语句。当比较为===!==时,不会进行类型转换,因为这涉及比较类型和值

  1. var_dump("10" == "1e1"); // 10 == 10 -> true
  2. var_dump(100 == "1e2"); // 100 == 100 -> true
  3. 为什么在第一个例子中它被评估为真,但是,语句$ num =(int)“1e1”;评估为1而不是10 ??? 此外,为什么在第二个例子中它被评估为真,但语句$ num =(int)“1e2”;被评估为1而不是100 ??

3 个答案:

答案 0 :(得分:1)

我不确定为什么(int)'1E1'会显示1(它可能会忽略所有字母和之后的任何字母),但对我来说完美无缺的是:

echo '1E1'*1; //returns 10

答案 1 :(得分:0)

  1. 字符串和字符串比较:“10”是与“1e1”相同的字符串表示。
  2. Int和字符串比较:100为字符串为“100”或“1e2”,与“1e2”表示相同;
  3. 将字符串转换为int:(int)“1e1”=> 1为intval(“1e1”)。
  4. 投射与平等不同。

答案 2 :(得分:0)

1e1 double

var_dump("10" == "1e1");
// 10 (converts to real type, not int) == 10 (converts to real type, not int) -> true

我尝试将数字字符串(浮点类型)转换为整数:

(int)'1E1'

它变为1而不是100。