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; ?>",我希望它们的样式根据$status. 我没有使用else 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'或的值只有两种可能的结果'draw'

为什么是这样?基本逻辑说,除非有平局,否则游戏总会有赢家。你的if说法与此一致。要么$homescore > $awayscore$homescore < $awayscore(或有平局)。因此,在非平局的情况下,您的第一个 if 的一方将评估为true,因此整个条件将是true因为||只需要一个真值。因此,除非有平局,$status否则将设置为'win'

继续前进,基本逻辑还会告诉我们,除非打平,否则游戏总是有输家。同样,您的代码符合这一点。在不平局的情况下,其中一个分数将低于另一个,因此您的第二个 if 将评估为true与第一个一样。现在$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 ($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 回答
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 回答