可能重复:
The 3 different equals
有人能告诉我为什么,在使用下面的代码时,我会被重定向到elephant.com而不是看到'长颈鹿!
<?php
$foo="giraffe";
if($foo="elephant"){
header("location:http://www.elephant.com");
exit();
}else{
echo $foo;}
?>
感谢您寻找
Ĵ
答案 0 :(得分:7)
if($foo="elephant")
你在这里分配$foo
,而不是比较它;你应该这样做:
if($foo=="elephant")
赋值操作的结果是刚刚分配的值;在这种情况下,'elephant'正在评估为真。
答案 1 :(得分:1)
您的if()
语句只有一个等号。这不会在PHP中进行比较;它设置值并返回true。
为了进行比较,您需要使用双等号或三等号:
if($foo == "elephant") { .... }
或
if($foo === "elephant") { .... }
两者之间的区别在于,double-equal不关心变量的数据类型,而triple-equal则关注变量的数据类型。在这种情况下,它们之间没有太大区别,但值得学习和理解差异,因为如果你不了解它们,它们会咬你。更多信息:http://php.net/manual/en/language.operators.comparison.php