PHPの条件ステートメントを使用して少し問題があります。これは私が書こうとしているコードのタイプです。これはプロファイルページであり、プロファイルを持つユーザーのみが見ることができます(私はそれをチェックするためにセッション変数を使用しています):
<?php if(check if user is logged in) ?>
<display users profile in html>
<?php else ?>
<display an error>
しかし、これは機能しません。また、if
の最後に:
を付けてendif
ステートメントを使用することにより、短縮表記を使用してみましたが、機能しませんでした。 (以前のプロジェクトでは、:
メソッドはforeach
とendforeach
で機能したため、試してみると思いました)
何か案は ?
代替制御構造構文 のendif
を忘れた可能性があります:
<?php if(check if user is logged in): ?>
<display users profile in html>
<?php else: ?>
<display an error>
<?php endif; ?>
あなたが書いたように中括弧を省略することはできません。 通常のステートメント が後に続く場合のみ可能です。
PHPには、if()ブロック(および一般的なブロック)の2つの表記スタイルがあります。
まず、if()ブロックの最後にendif;
を明示的に記述するという複雑な表記があります。次のようになります。
if(whatever):
do something
else:
do something else
endif;
if
およびelse
行の最後のコロンは重要です。それ以外の場合、PHPは、他の表記法(下記)を使用していると見なすためです。
次に、中括弧表記があり、CまたはPerlスタイルのコードに似ており、次のようになります。
if(whatever) {
do something
} else {
do something else.
}
このスタイル表記では、ブロックが1行だけになる場合は、中括弧のペアをオフのままにすることができます。 (私は個人的に、このようにそれらを省略することは悪い習慣だと思いますが、多くの人がそれを誓います、そしてそれは完全に有効な構文です。しかし、私は見ましたPHP単一行で混乱するPHPコードとHTMLを切り替えるときにブロックします。これが、1行だけを記述している場合でも、常に中かっこを使用することを好む理由です)。
あなたの場合の問題は、2つの表記法が混在していることです。あなたは単語表記を使おうとしていますが、行にコロンがないので、PHPは中括弧表記を意味していると考えます。しかし、中括弧表記は中括弧を省略できるので、PHPは、コードが意図したとおりに機能しない場合でも、コードを有効な構文と見なしています。
あなたの解決策は、片方の構文を確実に使用できるように整頓することです。例に示すように、各ブロックの開始と終了に中括弧({
および}
})を追加するか、コロンとendif;
行を追加します。
したがって、コードは次の2つの例のいずれかのようになります。
<?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 } ?>
あなたの最初の考えは正しかった。 PHPドキュメント のように、これを行うには2つの方法があります。
<?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 } ?>
テンプレートを条件付きでレンダリングする別の方法は、include
を使用することです
例
if($condition)
{
include 'page1.php';
}else{
include 'page2.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 ?>