проблема с оператором if, используемым для определения возврата функции - PullRequest
2 голосов
/ 04 декабря 2009

Я использую оператор 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 - это строка (если это помогает), и при вводе она не дает никакого возврата. Если я вручную устанавливаю возврат, это работает, но выше почему-то не так.

Ответы [ 3 ]

6 голосов
/ 04 декабря 2009

Вы используете оператор присваивания вместо оператора сравнения. Вместо этого попробуйте следующее.

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

Когда вы говорите

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

ты действительно говоришь

  1. Присвойте значение "dave" переменной $ cats
  2. Если переменная $ cats равна true после присваивания, вернуть true. В противном случае вернуть false

Это распространенная ошибка, и то, что поражает как старые, так и новые руки.

6 голосов
/ 04 декабря 2009

Чтобы проверить на равенство, используйте оператор == (двойное равенство) вместо оператора = (одинаковое равенство).

Например:

if("dave" == $cats){return $reg;}
if("tom"  == $cats){return $nate;}
2 голосов
/ 04 декабря 2009

Вам нужно использовать == для сравнения.

= является присваиванием, поэтому он устанавливает значение $ cats в значение «dave», а затем (поскольку выражение оценивается как «dave», которое не является пустым), оно обрабатывает оператор if как «if (true) ) ... "и выполняет содержащийся код.

...