2009-12-03 97 views
2

Im使用if语句来确定函数中返回的内容,但它似乎没有按照我希望的方式工作。if语句用于确定函数返回的问题

function DoThis($dogs, $cats){ 
// do something with dogs, pet them perhaps. 

$reg = $dogs[0]; 
$nate = $dogs[1]; 

if($cats = "dave"){return $reg;} 
if($cats = "tom"){return $nate;} 

} 

$cats是一个字符串(是否有帮助),输入的时候不产生任何收益。 如果我手动设置一个回报,那有效,但上面没有出于某种原因。

回答

6

要测试相等性,请使用==(double equals)运算符而不是=(single equals)运算符。

例如:

if("dave" == $cats){return $reg;} 
if("tom" == $cats){return $nate;} 
+1

在右侧写入变量,如果忘记a =,则会得到解析错误。例如'if('dave'== $ cats){' – VolkerK 2009-12-03 22:57:52

+0

良好的通话,我只是更新了我的答案。一旦你养成了这种习惯,这是一种很棒的风格,虽然你会看到的if语句的每个例子总是以另一种方式来做...... – 2009-12-04 01:09:58

6

您使用赋值运算符,而不是比较操作。改为尝试以下内容。

$cats == "dave" 
$cats == "tom" 

当你说

if($cats = "dave") { ... } 

你真的说

  1. 值 “戴夫” 分配给变量$猫
  2. 如果变量$猫是真正的后赋值,返回true。否则,返回false

这是一个常见的错误,并且困扰着老手和新手。

2

您需要使用==进行比较。

=是一个赋值,因此它具有将$ cats设置为“dave”然后(因为表达式计算为“dave”,非空)的效果,它将if语句视为“if true)...“并执行包含的代码。