Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据php条件更改变量的值_Php_Conditional Statements - Fatal编程技术网

根据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>