2012-11-07 36 views
0

可能重複:
The 3 different equalsPHP執行標題:位置,無論IF語句的參數

誰能告訴我爲什麼,使用下面的代碼的時候,我被重定向到elephant.com而不是看到'長頸鹿!

<?php 
$foo="giraffe"; 
if($foo="elephant"){ 
header("location:http://www.elephant.com"); 
exit(); 
}else{ 
echo $foo;} 
?> 

感謝您尋找

Ĵ

+5

使用==而不是= –

+1

你有** = **分配,當你想與** == **進行比較和正確使用標題位置和完整的URI – 2012-11-07 18:48:04

回答

7
if($foo="elephant") 

你在這裏分配$foo,而不是它的比較;你應該這樣做:

if($foo=="elephant") 

賦值操作的結果是剛分配的值;在這種情況下,「大象」正在評估爲真實。

+0

Doh!我是個笨蛋。你不知道我一直盯着那個多久。 感謝您指出明顯! – Jules

+0

沒問題 - 這是很容易忽略的事情之一,直到一組新的眼睛看着它。 – andrewsi

1

您的if()聲明有一個等號。這不會在PHP中進行比較;它設置值並返回true。

爲了做一個比較,你需要使用一個雙等於或三等號:

if($foo == "elephant") { .... } 

if($foo === "elephant") { .... } 

兩者之間的區別是,雙-equal不關心變量的數據類型,而triple-equal則不關心變量的數據類型。在這種情況下,它們之間沒有太大的區別,但值得學習和理解差異,因爲如果你不瞭解它們,它們會咬你。更多的信息在這裏:http://php.net/manual/en/language.operators.comparison.php