Отобразите выигрыш, если наш результат больше, чем у соперника, или проигрыш, если наш результат меньше их. - PullRequest
1 голос
/ 12 мая 2011

Я использую PHP для вывода XML-ленты наших результатов по Стэнфордской легкой атлетике, в этом примере мужской баскетбол.Два из атрибутов - это баллы обеих команд, «hs» - домашний балл, а «vs» - балл посетителя (например, атрибуты XML штата Орегон против Стэнфорда: hs = "67" vs = "69").«hn» и «vn» - это домашнее имя и имя посетителя (например, «Стэнфорд» или «Штат Орегон»).Дополнительные 'hc' и 'vc' - это домашний город и город посетителя, и он содержит первые 4 буквы названия города (например, Стэнфорд будет «Стэн», а «Штат Орегон» будет «Орег»).Примечание: поскольку Cat имеет длину всего три буквы, то и «hc», и «vc» для Cat означают «cat».

Мой вопрос: возможно ли отобразить «Win», если оценка по Стэнфорду равнабольше, чем оценка противника, или отображается «Потеря», является ли оценка Стэнфорда меньше, чем оценка противника?Например, штат Орегон опередил Стэнфорд, так как я могу отобразить «в штате Орегон - потери»?

Вот моя страница , XML и код:

<?php
$xml = simplexml_load_file('http://www.gostanford.com/data/xml/events/m-baskbl/2010/index.xml');

// Reverse chronological order
$xmlArray = array();
foreach ($xml as $event_date) $xmlArray[] = $event_date;
$xmlArray = array_reverse($xmlArray);

foreach ($xmlArray as $event_date)
{
    // Only output if complete
    if(!empty($event_date->event['vn']) && !empty($event_date->event['hn']) && !empty($event_date->event['vs']) && !empty($event_date->event['hs']))
    {
    // Only show opponents' name
    $name = ($event_date->event['vc'] == 'stan') ? $event_date->event['hn'] : $event_date->event['vn'];
    // Output "vs" if home game or "at" if away game
    $preposition = ($event_date->event['hc'] == 'stan') ? 'vs' : 'at';
    echo '<li>';
        echo '<h3>', $preposition, ' ', $name, '</h3>';
        echo '<p><strong>', $event_date->event['vn'], ' ', $event_date->event['vs'], ' - ', $event_date->event['hn'], ' ', $event_date->event['hs'], '</strong></p>';
        echo '<p>', date('F j, Y', strtotime($event_date['date'])), '</p>';
    echo '</li>';
    }
}   
?>

Ответы [ 2 ]

3 голосов
/ 12 мая 2011
$home = ($event_date->event['hc'] == 'stan');
echo '<h3>', $preposition, ' ', $name, ' - ', ((int)$event_date->event['hs'] == (int)$event_date->event['vs'] ? "Tie" : (((int)$event_date->event['hs'] > (int)$event_date->event['vs']) ? ($home? 'Win' : 'Loss') : ($home ? 'Loss' : 'Win'))), '</h3>';

Поместите их в ваш цикл foreach, и я также добавил "Tie" штуку.

Определив переменную $ home, вы можете заменить эти строки:

 // Only show opponents' name
 $name = ($event_date->event['vc'] == 'stan') ? $event_date->event['hn'] : $event_date->event['vn'];
// Output "vs" if home game or "at" if away game
$preposition = ($event_date->event['hc'] == 'stan') ? 'vs' : 'at';

с этими:

// Home?
$home = ($event_date->event['hc'] == 'stan');
// Only show opponents' name
$name = $home ? $event_date->event['hn'] : $event_date->event['vn'];
// Output "vs" if home game or "at" if away game
$preposition = $home ? 'vs' : 'at';

и вам не понадобится $ home в коде, который я написал.

Итак, вот полный код:

<?php
$xml = simplexml_load_file('http://www.gostanford.com/data/xml/events/m-baskbl/2010/index.xml');

// Reverse chronological order
$xmlArray = array();
foreach ($xml as $event_date) $xmlArray[] = $event_date;
$xmlArray = array_reverse($xmlArray);

foreach ($xmlArray as $event_date)
{
    // Only output if complete
    if(!empty($event_date->event['vn']) && !empty($event_date->event['hn']) && !empty($event_date->event['vs']) && !empty($event_date->event['hs']))
    {
    // Home?
    $home = ($event_date->event['hc'] == 'stan');
    // Only show opponents' name
    $name = $home ? $event_date->event['vn'] : $event_date->event['hn'];
    // Output "vs" if home game or "at" if away game
    $preposition = $home ? 'vs' : 'at';
    echo '<li>';
        echo '<h3>', $preposition, ' ', $name, ' - ', ((int)$event_date->event['hs'] == (int)$event_date->event['vs'] ? "Tie" : (((int)$event_date->event['hs'] > (int)$event_date->event['vs']) ? ($home? 'Win' : 'Loss') : ($home ? 'Loss' : 'Win'))), '</h3>';
        echo '<p><strong>', $event_date->event['vn'], ' ', $event_date->event['vs'], ' - ', $event_date->event['hn'], ' ', $event_date->event['hs'], '</strong></p>';
        echo '<p>', date('F j, Y', strtotime($event_date['date'])), '</p>';
    echo '</li>';
    }
}   
?>

Расширенный код с "если" и другие комментарии:

<?php
$xml = simplexml_load_file('http://www.gostanford.com/data/xml/events/m-baskbl/2010/index.xml');

// Reverse chronological order
$xmlArray = array();
foreach ($xml as $event_date) $xmlArray[] = $event_date;
$xmlArray = array_reverse($xmlArray);

foreach ($xmlArray as $event_date)
{
    // Only output if complete
    if(!empty($event_date->event['vn']) && !empty($event_date->event['hn']) && !empty($event_date->event['vs']) && !empty($event_date->event['hs']))
    {
    // Home?
    $home = ($event_date->event['hc'] == 'stan');
    // Only show opponents' name
    $name = $home ? $event_date->event['vn'] : $event_date->event['hn'];
    // Output "vs" if home game or "at" if away game
    $preposition = $home ? 'vs' : 'at';
    if((int)$event_date->event['hs'] == (int)$event_date->event['vs']) // Tie?
    {
    $result = 'Tie'; // Tie
    }
    else if((int)$event_date->event['hs'] > (int)$event_date->event['vs']) // Home team won?
    {
    if($home) // Home?
    {
    $result = 'Win'; // You're home and the home team won
    }
    else
    {
    $result = 'Loss'; // You're away, but the home team won
    }
    }
    else // Home team lost
    {
    if($home) // Home?
    {
    $result = 'Loss'; // You're away, but the home team won
    }
    else
    {
    $result = 'Win'; // You're home and the home team won
    }
    }
    echo '<li>';
        echo '<h3>', $preposition, ' ', $name, ' - ', $result, '</h3>';
        echo '<p><strong>', $event_date->event['vn'], ' ', $event_date->event['vs'], ' - ', $event_date->event['hn'], ' ', $event_date->event['hs'], '</strong></p>';
        echo '<p>', date('F j, Y', strtotime($event_date['date'])), '</p>';
    echo '</li>';
    }
}   
?>
0 голосов
/ 12 мая 2011

Предполагается, что $event_date->event['hs'] является Home Score , а $event_date->event['vs'] является Versus Score :

echo ($event_date->event['hs'] > $event_date->event['vs']) ? 'WIN' : 'LOSS';

Или, если есть потенциал в игре на ничью:

echo ($event_date->event['hs'] > $event_date->event['vs']) ? 'WIN' : ($event_date->event['hs'] < $event_date->event['vs']) ? 'LOSS' : 'TIE';

Примечание: Вывод этого ответа основан на домашней команде. Поскольку вам нужно, чтобы он всегда имел отношение к Стэнфорду, ответ @ Tyilo - лучшее совпадение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...