Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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 如何在foreach循环中使用if…else语句?_Php_Xml_Loops_If Statement_Foreach - Fatal编程技术网

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 );