根据php条件更改变量的值
我有一个类名,它应该根据某些条件进行更改,但我的语法或逻辑似乎不正确,因为它不起作用:根据php条件更改变量的值,php,conditional-statements,Php,Conditional Statements,我有一个类名,它应该根据某些条件进行更改,但我的语法或逻辑似乎不正确,因为它不起作用: if ( $hometeam && ($homescore > $awayscore) || $awayteam && ($awayscore > $homescore)){ $status= 'win'; } if ( $home
if ( $hometeam && ($homescore > $awayscore) || $awayteam && ($awayscore > $homescore)){
$status= 'win';
}
if ( $hometeam && ($homescore < $awayscore) || $awayteam && ($awayscore < $homescore)) {
$status= 'lose';
}
if ($homescore == $awayscore) {
$status= 'draw';
}
你需要对你的情况进行更好的分类
if ( ($hometeam && ($homescore > $awayscore)) || ($awayteam && ($awayscore > $homescore)))
{
$status= 'win';
}
else if ( ($hometeam && ($homescore < $awayscore)) || ($awayteam && ($awayscore < $homescore)))
{
$status= 'lose';
}
else
{
$status= 'draw';
}
if($hometeam&($homescore>$awayscore))| |($awayteam&($awayscore>$homescore)))
{
$status='win';
}
如果($hometeam&($homescore<$awayscore))| |($awayteam&($awayscore<$homescore)))
{
$status='lose';
}
其他的
{
$status='draw';
}
根据您的逻辑,$status
的值只有两种可能的结果:'lose'
或'draw'
为什么会这样?基本逻辑是,除非打成平局,否则一场比赛总会有赢家。您的if
语句与此一致。无论是$homescore>$awayscore
还是$homescore<$awayscore
(或者是平局)。因此,在非平局的情况下,第一个if的一侧将计算为true
,因此整个条件将为true
,因为|
只需要一个truthy。因此,除非出现平局,$status
将设置为'win'
接下来,基本逻辑也会告诉我们,除非打成平局,否则一场比赛总会有输家。同样,您的代码符合这一点。在非平局的情况下,其中一个分数将小于另一个分数,因此您的第二个if将像第一个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;
}
$winner='';
$loser='';
$draw=false;
如果($homescore>$awayscore){
$winner='home';
$loser=‘走开’;
}否则,如果($homescore<$awayscore){
$winner='客场';
$looser='home';
}否则,如果($homescore===$awayscore){
$draw=true;
}
()
此代码还使用了else if
,因为如果您已确定谁赢谁输,则无需评估其他条件。if($homescore>$awayscore){
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>
$homestatus='win';
$awaystatus='lose';
}如果($homescore<$awayscore){
$homestatus=‘失去’;
$awaystatus='win';
}否则{
$homestatus='draw';
$awaystatus='draw';
}
-
谢谢你的回复$状态=‘赢’对于两队来说,其中一队应该等于‘赢’而另一队等于‘输’。也许我们没有足够的信息给你正确的答案,但是,我给出的答案是有效的:问题是有几场比赛和几支球队,所以我希望状态被评估不止一次。也许这是不可能的?在PHP中,else if
应该是一个单词,以符合PSR-12编码标准。@mickmackusa当然!Peeps必须意识到这个答案是在13年发布的,PSR-12在6年后发布,但我同意!PHPMyCODE的答案是好的,但你可能需要考虑这项运动,如果得分是一个游戏,有可能有一个胜利者和一个失败者:在足球(足球)杯赛中可以打成平局,去罚点球,但是结果仍然是记录在90分钟内的进球,但是一个球队赢得了整个比赛。这是一个很好的观点。我得问问他们想如何对待点球胜利。加时赛胜利也是如此,“1-1英尺,A队2-1英尺”在很多足球网站/报告/结果上都很常见。如果你只关注联赛,那么这显然是可以忽略的。事实上,这是一个本地联赛,他们只是一个报告,有足够的空间来描述比赛,所以我想他们会把更多的细节放在那里。也许我会为FT或AET增加一个额外的元框,也许还有一个半场得分。
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>