これが単なる静的なWebサイトである場合、4つのリンクがあります
<li><a href="javascript:void(0)">Action 1</a></li>
<li><a href="javascript:void(0)">Action 2</a></li>
<li><a href="javascript:void(0)">Action 3</a></li>
<li><a href="javascript:void(0)">Action 4</a></li>
ただし、この場合、リンクは、クリックしているユーザーに応じて、異なるコールバックを実行し、メッセージとアクションを出力する必要があります。現在、このすべての複雑さのために、私は非常に厄介なページを持っています。私のコードは次のようになります。
<?php
foreach ($var as $key) {
?>
<div class="content">
<li><a href="javascript:void(0)">Action 1</a></li>
<li><a href="javascript:void(0)">Action 2</a></li>
<?php
if(session check){
$var1 = the ouptut of some function
$var2 = the output of another function
if(another check) {
?>
<li><a href="javascript:void(0)">Action 3 type 1</a></li>
<?php
} else{
if($var1 === something){
?>
<li><a href="javascript:void(0)" onClick="somefunc()">Action 3 type 2</a></li>
<?php
}
else {
?>
<li><a href="javascript:void(0)" class ="colorlink" onClick="somefunc()">Action 3 type 3</a></li>
<?php
}
}
/* we are done with action 3 and now moving to action 4. Nb: still in the same session check */
if($var2 == something){
?>
<li><a href="javascript:void(0)" onClick="somefunc()">Action 4 type 1</a></li>
<?php
}else{
?>
<li><a href="javascript:void(0)" style ="colorit"onClick="somefunc()">Action 4 type 2</a></li>
<?php
}
/* Now thats the end of everthing in the session check */
/* This else is for session not active */
} else{
<li><a href="javascript:void(0)">Action 3</a></li>
<li><a href="javascript:void(0)">Action 4</a></li>
}
?>
インデントがどれほどひどいのか本当に申し訳ありません。ここでインデントする方法が本当にわかりません。コードを再構築するためのより良い方法があるかどうか疑問に思っていました。適切にインデントされていれば、それほど悪くはありません。私が知っているオプションは、最初に、すべてをphpタグでラップし、htmlをエコーアウトすることですが、問題は、次のすべてのifステートメントでまだ見栄えが悪いことです。
2番目のオプションはif:、else:、endif;です。構築しますが、それはそれをより良くしません。これは私があなたに素晴らしい心を必要とするところです、他にどのように私はこのコードを再構築することができますか?