我有一个类名,应该根据某些条件进行更改,但我的语法或逻辑似乎不正确,因为它不起作用:
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>
按照你的逻辑,$status
的值只有两种可能的结果:'lose'
或'draw'
。
这是为什么呢?基本逻辑是,除非有平局,否则游戏总是有赢家。您的if
声明与此一致。要么$homescore > $awayscore
要么$homescore < $awayscore
(或者有平局(。因此,在不平局的情况下,您的第一个 if 的一侧将评估为 true
,因此整个条件将被true
,因为||
只需要一个事实。因此,除非有平局,否则$status
将被设置为 'win'
.
继续前进,基本逻辑也会告诉我们,除非有平局,否则游戏总是有输家。同样,您的代码符合此要求。如果出现非平局,其中一个分数将低于另一个分数,因此您的第二个 if 将像第一个一样评估为true
。现在$status = 'lose'
.
现在,如果有平局,$status
将等于 'draw'
,但除此之外$status
将始终'lose'
因为如果游戏有赢家,它也有输家,并且$status
设置为'win'
后设置为 'lose'
.
这里需要的是赢家、输家和平局的变量。这样:
$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
,因为如果您已经确定了谁赢谁输,则无需评估其他条件。
您需要更好地对条件进行分组。
if ( ($hometeam && ($homescore > $awayscore)) || ($awayteam && ($awayscore > $homescore)))
{
$status= 'win';
}
else if ( ($hometeam && ($homescore < $awayscore)) || ($awayteam && ($awayscore < $homescore)))
{
$status= 'lose';
}
else
{
$status= 'draw';
}
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>