我有一个名为root的变量。此变量的值为0
$root = 0;
if($root == "readmore"){
$root = 1701;
}
某种奇怪的原因,如果$ root为0,它仍然会进入上面的if语句?我不知道它可能是什么
答案 0 :(得分:3)
这是因为,通过类型杂耍,0
被视为等于"readmore"
。您要求PHP将字符串与整数进行比较,并将任何不包含数字的字符串解释为0
。
如果您使用if ($root === "readmore") ...
,PHP将检查类型以及变量的值。
答案 1 :(得分:3)
if (0 == 'readmore') {
// ...
}
这意味着'readmore'将被转换为整数; 'readmore',转换为整数,为0。
请参阅手册中的Type Juggling,以及String conversion to numbers,其中包含(引用):
如果字符串以有效开头 数值数据,这将是值 用过的。否则,该值将为0 (零)。
您可能希望使用===运算符,这将阻止这种转换:
if($root === "readmore") {
// You will not enter here, if $root is 0
}
答案 2 :(得分:2)
尝试
$root = 0;
if($root === "readmore"){
$root = 1701;
}
也要检查类型。