0

特定の条件に基づいて変更する必要があるクラス名がありますが、機能しないため、構文またはロジックが正しくないようです。

if ( $hometeam && ($homescore > $awayscore) || $awayteam && ($awayscore > $homescore)){
                        $status= 'win'; 
                    }                       
if ( $hometeam && ($homescore < $awayscore) || $awayteam && ($awayscore < $homescore)) {
                        $status= 'lose';
                    }                       
if ($homescore == $awayscore) {
                        $status= 'draw';
                    }

私の要素にはそれぞれ がありclass="<?php echo $status; ?>"、 の値に応じて異なるスタイルを設定したいと考えています$statuselse if値を適用して停止させたくなかったので使用しませんでしたが、それが起こっているようです。

編集:いくつかの明確化:

<ul class="match group">    
                <li>
                    <ul class="team1 <?php echo $status; ?>">
                        <li class="teamname"><h2><?php echo $homename; ?></h2></li>  
                        <li class="teamscore"><?php echo $homescore; ?></li>
                    </ul>
                </li>
                <li>
                    <ul class="team2 <?php echo $status; ?>">
                        <li class="teamname"><h2><?php echo $awayname?></h2></li>    
                        <li class="teamscore"><?php echo $awayscore?></li>                              
                    </ul>
                </li>
                <li><ul class="matchinfo">
                        <li><a href="reports.html#report4"><button>Get Report</button></a></li>
                    </ul>
                </li>
</ul>
4

3 に答える 3

2

あなたの論理では、$status:'lose'またはの値に対して考えられる結果は 2 つだけ'draw'です。

どうしてこれなの?基本的なロジックは、同点でない限り、ゲームには常に勝者がいるということです。あなたのif発言はこれと一致しています。$homescore > $awayscoreまたは$homescore < $awayscore(または同点あり)のいずれかです。したがって、同点でない場合、最初の if の側面の 1 つが に評価されるためtrue、条件全体は1 つの truey だけが必要です。したがって、同点でない限り、に設定されます。true||$status'win'

次に進むと、基本的なロジックは、引き分けでない限り、ゲームには常に敗者がいるということも教えてくれます。繰り返しますが、コードはこれに準拠しています。同点でない場合、一方のスコアが他方よりも低くなるため、2 番目の if はtrue最初の do と同じように評価されます。今$status = 'lose'

引き分けの場合$statusは に等しくなり'draw'ますが、それ以外の場合$statusは常に になります'lose'。これは、ゲームに勝者がいる場合、敗者もあり、 に$status設定された'lose'後に に設定されるため'win'です。


ここで必要なのは、勝者、敗者、引き分けの変数です。そのようです:

$winner = '';
$loser  = '';
$draw   = false;

if($homescore > $awayscore) {
    $winner = 'home';
    $loser  = 'away';
} else if($homescore < $awayscore) {
    $winner = 'away';
    $loser  = 'home';
} else if($homescore === $awayscore) {
    $draw   = true;
}

(コードパッドのデモ)

このコードは も利用しelse ifます。これは、勝者と敗者を決定した場合、他の条件を評価する必要がないためです。

于 2013-06-27T14:51:58.497 に答える
0

条件をより適切にグループ化する必要があります。

if ( ($hometeam && ($homescore > $awayscore)) || ($awayteam && ($awayscore > $homescore))) 
{
  $status= 'win'; 
}                       
else if ( ($hometeam && ($homescore < $awayscore)) || ($awayteam && ($awayscore < $homescore))) 
{
  $status= 'lose';
} 
else 
{
  $status= 'draw';
}
于 2013-06-27T14:41:40.743 に答える
0
if ($homescore > $awayscore) {
        $homestatus = 'win';
        $awaystatus = 'lose';
    } else if ($homescore < $awayscore) { 
        $homestatus = 'lose';
        $awaystatus = 'win';
    } else {
        $homestatus = 'draw';
        $awaystatus = 'draw';
    }

<ul class="match group">    
            <li>
                <ul class="team1 <?php echo $homestatus; ?>">
                    <li class="teamname"><h2><?php echo $homename; ?></h2></li>  
                    <li class="teamscore"><?php echo $homescore; ?></li>
                </ul>
            </li>
            <li>
                <ul class="team2 <?php echo $awaystatus; ?>">
                    <li class="teamname"><h2><?php echo $awayname?></h2></li>    
                    <li class="teamscore"><?php echo $awayscore?></li>                              
                </ul>
            </li>
            <li><ul class="matchinfo">
                    <li><a href="the_permalink()"><button>Get Report</button></a></li>
                </ul>
            </li>
</ul>
于 2013-06-28T07:22:24.317 に答える