簡體   English   中英

HTML 代碼之間的 PHP 代碼中的條件語句

[英]Conditional Statements in PHP code Between HTML Code

我在 PHP 中使用由 HTML 代碼分隔的條件語句時遇到了一些問題。 這是我正在嘗試編寫的代碼類型。 這是一個個人資料頁面,它只能由其個人資料所在的用戶看到(我正在使用會話變量進行檢查):

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

但這不起作用。 我還嘗試通過在if末尾放置一個:並使用endif語句來使用速記符號,但它沒有用。 (在早期的項目中, :方法適用於foreachendforeach所以我想我會嘗試一下)

有什么想法嗎?

您可能忘記了替代控制結構語法endif

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

像你寫的那樣省略大括號是不可能的。 僅當其后跟有常規語句時才有可能。

PHP 有兩種用於 if() 塊(和一般塊)的符號樣式。

首先,你有冗長的符號,它涉及明確說明endif; 在 if() 塊的末尾。 它看起來像這樣:

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 } ?>

希望有幫助。

使用大括號{}

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

有條件地呈現模板的另一種方法是使用include

示例

if($condition)
{
    include 'page1.php';
}else{
    include 'page2.php';
}

你最初的想法是正確的。 根據PHP 文檔,有兩種方法可以做到這一點:

<?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 } ?>

嘗試放入括號以分隔條件。

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

使用方括號,因為對於 php 解釋器,它跨越多行

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM