我有一个应该根据某些条件改变的类名,但我的语法或逻辑似乎不正确,因为它不起作用:
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>
答案 0 :(得分:2)
根据您的逻辑,$status
的价值只有两种可能的结果:'lose'
或'draw'
。
这是为什么?基本逻辑说,除非有平局,否则游戏总是会有胜利者。您的if
语句与此对齐。 $homescore > $awayscore
或$homescore < $awayscore
(或者有平局)。因此,如果出现非平局,则您的第一个if的一侧将评估为true
,因此整个条件将为true
,因为||
只需要一个真实。因此,除非有平局,否则$status
将设置为'win'
。
继续前进,基本逻辑也会告诉我们,除非有平局,否则游戏总是会失败。同样,您的代码符合这一点。如果没有平局,其中一个得分将低于另一个,因此你的第二个如果将评估为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
,因为如果您确定谁赢了又输了就不需要评估其他条件。
答案 1 :(得分:0)
您需要更好地分组您的条件。
if ( ($hometeam && ($homescore > $awayscore)) || ($awayteam && ($awayscore > $homescore)))
{
$status= 'win';
}
else if ( ($hometeam && ($homescore < $awayscore)) || ($awayteam && ($awayscore < $homescore)))
{
$status= 'lose';
}
else
{
$status= 'draw';
}
答案 2 :(得分: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>