<?php
$gender = "devilcode";
if (($gender == "female") || ($gender = "male"))
{
echo "ok";
}
else echo "no";
?>
它應輸出「否」,但輸出「ok」。我究竟做錯了什麼?我無法比較PHP中的兩個字符串
<?php
$gender = "devilcode";
if (($gender == "female") || ($gender = "male"))
{
echo "ok";
}
else echo "no";
?>
它應輸出「否」,但輸出「ok」。我究竟做錯了什麼?我無法比較PHP中的兩個字符串
您分配$gender
是男性,而不是測試它進行比較,則需要兩個等號:
$gender = "devilcode";
if (($gender == "female") || ($gender == "male"))
echo "ok";
else
echo "no";
這不是相反嗎?分配一個等號並比較兩個等號? – Rasika 2011-03-13 21:45:46
關於'=='和'==='的說明:http://stackoverflow.com/a/8494892/59087 – 2013-04-20 23:24:28
你錯過了等號:
($gender == "male")
編輯:正是由於這個原因,很多程序員認爲寫的比較其他方式,與左側的靜態值:
if ("male" == $gender) { ... }
這樣,如果您忘記並使用=而不是==,則會出現語法錯誤。
是IF $gender="male"
的第二部分?我認爲這總是迴歸真實並導致問題。讓它$gender=="male"
有在測試的第二部分中的錯誤。更換
($gender = "male") // assign $gender with the value "male"
// this is always evaluated to TRUE in your test
通過
($gender == "male") // test that $gender is equal to "male"
的良好實踐寫作條件,從這樣的錯誤保護是利用逆符號:
if ('female' === $gender || 'male' === $gender) {...
或:
$allowed = array('male', 'female', 'unknown');
if (in_array($gender, $allowed)) {...
你正在分配var $gender
以代替copmaring它($gender == 'male'
)
此外,如果你想測試對幾種可能的結果 '男'($gender = 'male'
)嘗試in_array()
$gender = 'devilcode'
$genders = array('female','male','unknown')
if(in_array($gender, $genders)){
echo 'ok';
}else{
echo 'no';
}
問候。
像人人說的那樣,把雙等於$ man的條件。並且把OR代替||。也許它改變了一些東西而且也不需要括號來表示條件。它應該工作。 – Kemal 2011-03-13 23:26:50