Php if语句发布

Php if语句发布,php,Php,我有一个叫做root的变量。此变量的值为0 $root = 0; if($root == "readmore"){ $root = 1701; } 不知为什么,由于某种奇怪的原因,如果$root为0,它仍然会进入上面的if语句?我不知道它可能是什么这是因为,对于类型转换,0被认为等同于“readmore”。您要求PHP将字符串与整数进行比较,它会将任何不包含数字的字符串解释为0 如果您使用If($root==“readmore”)…,PHP将检查变量

我有一个叫做root的变量。此变量的值为0

$root = 0;

if($root == "readmore"){

            $root = 1701;
        }

不知为什么,由于某种奇怪的原因,如果$root为0,它仍然会进入上面的if语句?我不知道它可能是什么

这是因为,对于类型转换,
0
被认为等同于
“readmore”
。您要求PHP将字符串与整数进行比较,它会将任何不包含数字的字符串解释为
0


如果您使用
If($root==“readmore”)…
,PHP将检查变量的类型和值。

这是因为,在进行类型转换时,
0
被视为等同于
“readmore”
。您要求PHP将字符串与整数进行比较,它会将任何不包含数字的字符串解释为
0

如果使用
If($root==“readmore”)…
,PHP将检查变量的类型和值。

试试看

$root = 0;

if($root === "readmore"){

        $root = 1701;
    }
也要检查类型。

请尝试

$root = 0;

if($root === "readmore"){

        $root = 1701;
    }

也要检查类型。

基本上,您正在进行以下比较:

if (0 == 'readmore') {
  // ...
}
这意味着“readmore”将转换为整数;而“readmore”转换为整数后为0

请参见手册中关于此的内容,以及说明(引用):

如果字符串以valid开头 数字数据,这将是值 习惯于否则,该值将为0 (零)


您可能希望使用===运算符,这将阻止这种转换:

if($root === "readmore") {
  // You will not enter here, if $root is 0
}

请参阅。

基本上,您正在进行此比较:

if (0 == 'readmore') {
  // ...
}
这意味着“readmore”将转换为整数;而“readmore”转换为整数后为0

请参见手册中关于此的内容,以及说明(引用):

如果字符串以valid开头 数字数据,这将是值 习惯于否则,该值将为0 (零)


您可能希望使用===运算符,这将阻止这种转换:

if($root === "readmore") {
  // You will not enter here, if $root is 0
}
参见。

参见此问题:参见此问题: