Php 如何在foreach循环中使用if…else语句?
好的,我使用这个Php 如何在foreach循环中使用if…else语句?,php,xml,loops,if-statement,foreach,Php,Xml,Loops,If Statement,Foreach,好的,我使用这个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['BScoreN
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>
$myinfo=simplexml\u加载\u文件('http://mysite/results.xml');
foreach($myinfo->Event as$info):
$cid=$info['EventID'];
$a=$info->Match['AScoreNT'];
$b=$info->Match['BScoreNT'];
如果($a>$b){
$win=1;
}其他(a
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;
我刚刚在if语句之前添加了str_replace,现在工作得很好。。这让我想起了javascript中的parsefloat。。非常罕见,但解决了这个问题。。谢谢各位 $a = str_replace( ' ', '', $a ); $b = str_replace( ' ', '', $b ); $a=str_替换(“”,,$a); $b=str_替换(“”,,$b);
你确定这不是打字错误吗?您缺少一个
代码>。另外,尝试使用显式大括号,而不是您当前的方式。@strustmaster您是对的,我修复了缺少的代码>。我不认为这与他的问题有任何关系,否则他就不会一直打印3
)@xdazz是的,我今天了解到了这一点,并编辑了我的评论:)var_dump($info->Match['AScoreNT'],$info->Match['BScoreNT']);这是否显示了您期望的值?你确定你在比较整数而不是字符串吗?没有占位符的sprintf?这有什么意义?对于简单的变量插值,只需使用简单的双引号字符串即可。sprintf仅在格式化/类型转换插入值时才有用。请使用提要和完整的代码更新您的问题(这将向我们展示如何在迭代XML之前阅读XML)。
$a = str_replace( ' ', '', $a );
$b = str_replace( ' ', '', $b );