PHP执行头:无论IF语句参数如何

时间:2012-11-07 18:46:43

标签: php

  

可能重复:
  The 3 different equals

有人能告诉我为什么,在使用下面的代码时,我会被重定向到elephant.com而不是看到'长颈鹿!

<?php
$foo="giraffe";
if($foo="elephant"){
header("location:http://www.elephant.com");
exit();
}else{
 echo $foo;}
?>

感谢您寻找

Ĵ

2 个答案:

答案 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