1

我最近遇到了一个奇怪的问题。

 if($somestring != "" && $somestring > 0){
  // do something.
 }

我的问题是,这两个检查是一样的吗?在 PHP 中转换为 INT 时字符串是否总是大于 0?或者一个字符串可以评估为 0?

4

3 回答 3

2

也许这就是你要找的……?

http://us3.php.net/types.comparisons

  • "php" == 0是真的。
  • "php" === 0是假的。
于 2013-07-14T19:16:13.657 回答
2

可以有字符串“-1”,它会被直接评估为 -1 int

关于您的情况-首先检查它是否为空-在这种情况下,它将被评估为 0。看起来作者不希望 php 这样做并需要该值

于 2013-07-14T19:18:57.190 回答
1

首先,字符串可以是“空的”,因此其中没有任何内容。未设置时为整数,默认设置为 0

所以分解是

if ($somestring != "") // 1 - check to see if the string is not empty
if ($somestring > 0)   // 2 - Check to see of the non-empty string has a value greater than 0

所以作者试图防止松散类型的脚本。

希望这可以帮助 :)

于 2013-07-14T19:23:56.213 回答