2011-03-02 78 views
1

我想寫會是一個簡單的條件。PHP如果條件與字符串

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.然而,無論我做什麼gender1和gender2返回一樣。例如,我得到這個輸出:MF1

我目前不知所措,有什麼建議嗎?

+1

[This earlier answer may help](http://stackoverflow.com/questions/2063480/the-3-different-equals)。 – 2011-03-02 22:46:36

回答

7
if ($gender1 = $gender2) 

分配的$gender2$gender1和收益的值,如果結果(即$gender2的值)的計算結果爲真(每個非空字符串一樣)。你想

if ($gender1 == $gender2) 

順便說一句,全功能可以簡寫,就像這樣:

function genderMatch($cid1, $cid2) { 
    return getGender($cid1) == getGender($cid2); 
} 
3

你要放兩個==進行比較。只有一個,就像你現在所做的那樣,你正在給第一個變量賦值。

 if($gender1=$gender2) 

將成爲

if($gender1==$gender2) 
1

這樣的:

if($gender1=$gender2) 

應該

if($gender1==$gender2) 

通知額外=的跡象。我想你可能還需要在if/else語句的多行中使用大括號。

1

您的代碼存在一些結構性問題,並且沒有進行比較而是分配。

您的代碼應該是這樣的:

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語句。這是一個比較。一個'='是一個任務。另外,如果你想用if/else執行多於一行的代碼,你需要括號。

0

您正在使用單個=設置變量,即。 $ gender1的值被設置爲$ gender2的值。

改爲使用===運算符:if($gender1 === $gender2)strict comparisons rather than loose comparisons通常是個好主意。

瞭解更多關於運營商在這裏:php.net

另一種方法是使用strcmp($gender1, $gender2) == 0。在字符串數據類型不被視爲主要數據類型的語言中,使用比較器方法/函數更常見,例如。 C,Java,C#。