2010-09-28 102 views
22

通過使用HTML中的條件語句分隔HTML代碼,我遇到了一些問題。這是我正在編寫的代碼類型。這是一個個人頁面,它應該只通過其配置文件是(我使用的會話變量檢查),用戶可以看到:HTML代碼之間的PHP代碼中的條件語句

<?php if(check if user is logged in) ?> 
<display users profile in html> 
<?php else ?> 
<display an error> 

但是,這是行不通的。我還嘗試在if的末尾加上:並使用聲明來使用簡寫符號,但它不起作用。 (在早期的一個項目,該:方法處理爲foreachendforeach所以我想我會嘗試一下)

什麼想法?

回答

58

你可能忘記的alternative control structure syntaxendif

<?php if(check if user is logged in): ?> 
<display users profile in html> 
<?php else: ?> 
<display an error> 
<?php endif; ?> 

省略括號爲你寫是不可能的。只有後面跟着regular statement纔有可能。

+0

+1:爲了便於閱讀,我更喜歡這種語法。 – RedFilter 2010-09-28 12:19:00

+0

用於使用'end *'/':'方法來完成HTML中的條件。 – RobertPitt 2010-09-28 12:19:05

+1

eurk。我討厭「endif」語法。任何一天給我很好的友好的花括號。 ;) – Spudley 2010-09-28 12:19:26

0

試着放在括號內以區分條件。

<?php if(check if user is logged in) { ?> 
<display users profile in html> 
<?php } else { ?> 
<display an error> 
<?php } ?> 
0

使用括號因爲PHP解釋這種跨越多行

<?php if(check if user is logged in) { ?> 
<display users profile in html> 
<?php } else { ?> 
<display an error> 
<?php } // else ?> 
6

使用花括號{}

<?php if(check if user is logged in) { ?> 
<display users profile in html> 
<?php } else { ?> 
<display an error> 
<?php } ?> 
+3

我preffer括號,尤其是當你使用IDE – Hannes 2010-09-28 12:20:54

0

你最初的想法是正確的。有兩種方法這樣做的,因爲每PHP documentation

<?php if($loggedin): ?> 
<p>User is logged in.</p> 
<?php else: ?> 
<p>User is not logged in.</p> 
<?php endif; ?> 

或者:

<?php if($loggedin){ ?> 
<p>User is logged in.</p> 
<?php }else{ ?> 
<p>User is not logged in.</p> 
<?php } ?> 
+0

感謝使它響亮而清晰:)乾杯:) – 0xff0000 2010-09-28 12:30:43

11

PHP有兩種風格符號來,如果()塊(和塊一般)。首先,你有羅嗦的符號,其中包括在if()塊的結尾處明確指出endif;。它看起來像這樣:

if(whatever): 
    do something 
else: 
    do something else 
endif; 

ifelse線末端的冒號是很重要的,因爲如果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 } ?> 

希望有所幫助。

+0

哇,那非常精細。謝謝 !我<3'in!所以:) – 0xff0000 2010-09-28 12:34:07