1

このforeachループを使用して解析xmlし、結果データをデータベースに追加します。$win値を設定する必要がありますが、必要がない場合は常に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>
4

2 に答える 2

0

if ステートメントの前に str_replace を追加したところ、今では完璧に機能しています..これは、javascript の parsefloat を覚えています..非常にまれですが、問題を解決しました..みんなありがとう

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

于 2012-09-10T06:41:19.757 に答える
0

echoandの値と$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...

更新:
私の疑いは正しかったです。int ではなく文字列を比較しているため、equal結果が得られます (両側が空の文字列ではないため、PHP によると、それらは似ています...わかります、直感的ではありません。それについて読むことをお勧めします!)。

これを修正するには、コードを次のように変更します。

if((int)$a > (int)$b){ 
   $win =1;
} elseif((int)$a < (int)$b){ 
   $win =2;
} else{ 
   $win =3;
}
于 2012-09-10T04:43:16.147 に答える