PHP有兩種風格符號來,如果()塊(和塊一般)。首先,你有羅嗦的符號,其中包括在if()塊的結尾處明確指出endif;
。它看起來像這樣:
if(whatever):
do something
else:
do something else
endif;
在if
和else
線末端的冒號是很重要的,因爲如果PHP認爲你在使用其他符號(如下圖)。
其次,你有大括號的符號,看起來類似於C或Perl風格的代碼,如下所示:
if(whatever) {
do something
} else {
do something else.
}
使用這種類型的符號,你被允許離開對捲毛 - 如果你的街區只有一條路線,那麼這些街區就會被擋住。 (我個人認爲這樣做是不好的做法,但是很多人都贊同它,而且它是完全有效的語法。但是我已經看到PHP在單行塊中混淆,當你在PHP代碼之間切換時和HTML;這就是爲什麼我總是喜歡使用大括號,即使我只寫一行)。
你的情況的問題是你混合了這兩種符號。你試圖給我們羅嗦的符號,但沒有冒號,所以PHP認爲你的意思是大括號符號。但是因爲大括號符號允許大括號被遺漏,所以PHP將代碼看作是有效的語法,即使它不會像您計劃的那樣工作。
您的解決方案是整理它,以便您明確使用一種語法或其他語法。如我的示例所示,將大括號({
和}
})添加到每個塊的開頭和結尾,或者添加冒號和endif;
行。
所以,你的代碼看起來應該像這兩個例子中的一個:
<?php if(check if user is logged in): ?>
<display users profile in html>
<?php else: ?>
<display an error>
<?php endif; ?>
或...
<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } ?>
希望有所幫助。
+1:爲了便於閱讀,我更喜歡這種語法。 – RedFilter 2010-09-28 12:19:00
用於使用'end *'/':'方法來完成HTML中的條件。 – RobertPitt 2010-09-28 12:19:05
eurk。我討厭「endif」語法。任何一天給我很好的友好的花括號。 ;) – Spudley 2010-09-28 12:19:26