PHP, если условие со строками - PullRequest
1 голос
/ 03 марта 2011

Я пытаюсь написать было бы простое условие if.

function genderMatch($consumerid1, $consumerid2)
    {
    $gender1=getGender($consumerid1);
    $gender2=getGender($consumerid2);
    echo $gender1;
    echo $gender2;
    if($gender1=$gender2)   
      echo 1;
      return 1;
    else
       echo 0;
       return 0;
}

Вывод функции getGender - либо M, либо F. Однако, независимо от того, что я делаю, пол1 и пол2 возвращаются одинаково. Например, я получаю этот вывод: MF1

Я в настоящее время в растерянности, какие-либо предложения?

Ответы [ 6 ]

7 голосов
/ 03 марта 2011
if ($gender1 = $gender2)

присваивает значение $gender2 $gender1 и продолжается, если результат (т. Е. Значение $gender2) оценивается как true (каждая непустая строка делает). Вы хотите

if ($gender1 == $gender2)

Кстати, вся функция может быть написана короче, например:

function genderMatch($cid1, $cid2) {
  return getGender($cid1) == getGender($cid2);
}
3 голосов
/ 03 марта 2011

Вы должны поставить два == для сравнения. Только с одним, как у вас сейчас, вы присваиваете значение первой переменной.

     if($gender1=$gender2)   

станет

   if($gender1==$gender2)   
1 голос
/ 03 марта 2011

У вас есть некоторые структурные проблемы с вашим кодом, а также назначение вместо сравнения.

Ваш код должен выглядеть следующим образом:

function genderMatch($consumerid1, $consumerid2){
    $gender1=getGender($consumerid1);
    $gender2=getGender($consumerid2);
    echo $gender1;
    echo $gender2;
    if($gender1==$gender2){ 
      echo 1;
      return 1;
    }else{
       echo 0;
       return 0;
    }
}

Обратите внимание на двойные знаки '=' в операторе if. Это сравнение. Единственное «=» является назначением. Кроме того, если вы хотите выполнить более 1 строки кода с помощью if / else, вам нужны скобки.

1 голос
/ 03 марта 2011

Вы используете оператор присваивания = вместо операторов сравнения == (равно) или === (идентично). Посмотрите на операторы PHP.

1 голос
/ 03 марта 2011

this:

if($gender1=$gender2)   

должно быть

if($gender1==$gender2)   

обратите внимание на знак «=».Я думаю, вам также могут понадобиться фигурные скобки для нескольких строк оператора if / else.

0 голосов
/ 03 марта 2011

Вы используете один =, который устанавливает переменную, т.е.значение $ гендер1 установлено равным значению $ гендер 2.

Вместо этого используйте оператор ===: if($gender1 === $gender2).Обычно хорошей идеей является строгое сравнение, а не тщательное сравнение .

Подробнее об операторах здесь: php.net

Другой альтернативой является использование strcmp($gender1, $gender2) == 0.Использование метода / функции сравнения более распространено в языках, где строковый тип данных не рассматривается как первичный тип данных, например.C, Java, C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...