簡體   English   中英

如何在foreach循環中使用if ... else語句?

[英]How to use if…else statement inside a foreach loop?

好的即時消息使用此foreach循環來解析xml以將結果數據添加到我的數據庫中,我需要設置$win值,但是當它不應該b時它總是返回3。

$myinfo = simplexml_load_file('http://mysite/results.xml'); 

foreach ($myinfo->Event as $info): 

$cid=$info['EventID']; 
$a=$info->Match['AScoreNT'];
$b=$info->Match['BScoreNT'];

if($a > $b){ 
   $win =1;
} elseif($a < $b){ 
   $win =2;
} else{ 
   $win =3;
}

$sql = "
        INSERT IGNORE INTO `engine4_event_wins`
SET `win_result` = $win,
`comp_id` = $cid;

    ";


    mysql_query($sql);

endforeach; 


<MyFeed>
<Event Sport="AFL" Description="AFL - Finals - Week 1" EventID="651239"    FinalDate="2012-09-07T00:00:00">
<Match TeamA="Hawthorn" TeamB="Collingwood" AScoreNT="135" BScoreNT="97"/>
</Event>
<Event Sport="AFL" Description="AFL - Finals - Week 1" EventID="651240"  FinalDate="2012-09-08T00:00:00">
<Match TeamA="Adelaide Crows" TeamB="Sydney Swans" AScoreNT="42" BScoreNT="71"/>
</Event>

</MyFeed>

echo$a$b的值,看看為什么總是等於:)

您可以做的另一件事是:

foreach ($myinfo->Event as $info): 

$a=$info->Match['AScoreNT'];
$b=$info->Match['BScoreNT'];

if($a === $b){ 
   $win =3;
elseif($a > $b){ 
   $win =1;
} elseif($a < $b){ 
   $win =2;
} else{ 
   $win =4;
}

echo $win;

endforeach; 

我的猜測是它將打印4 ...

更新:
我的懷疑是正確的,您在比較字符串而不是整數,這就是為什么您得到equal結果的原因(雙方都不是空字符串,因此,根據PHP,它們相似...我知道,這不直觀,我建議閱讀有關它 !)。

為了解決它,將您的代碼更改為:

if((int)$a > (int)$b){ 
   $win =1;
} elseif((int)$a < (int)$b){ 
   $win =2;
} else{ 
   $win =3;
}

我只是在if語句之前添加了str_replace,並且現在可以完美地工作了..這使我想起了JavaScript中的parsefloat。

$a = str_replace( ' ', '', $a ); 
    $b = str_replace( ' ', '', $b );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM