根据条件 PHP 更改变量的值


change value of variable based on conditions php

我有一个类名,应该根据某些条件进行更改,但我的语法或逻辑似乎不正确,因为它不起作用:

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>