0

我通过 xml 提要提取有关体育赛事的数据,我使用 simplexml 来执行此操作。到目前为止,我得到了一个foreach循环,循环遍历所有事件并将它们作为包含在<a>标签中的事件名称列表回显,指向页面event.php?=id(id 由名为 id 的 events 属性确定)。

要做到这一点,我正在使用

<?php
    $xml = simplexml_load_file("openbet_cdn.xml");
    foreach($xml->response->williamhill->class->type->market as $market) {
        $market_attributes = $market->attributes();
        printf("<a href=\"event.php?id=%s\">%s</a>\n", 
                    $market_attributes->id, 
                    $market_attributes->name);
    }
?>

我使用的提要是http://whdn.williamhill.com/pricefeed/openbet_cdn?action=template&template=getHierarchyByMarketType&classId=5&marketSort=HH&filterBIR=N

我遇到的问题是在我的页面 event.php 上,我不断收到显示的 xml 提要中的第一个事件。为此,我使用:

<?php 
  foreach ($xml->response->williamhill->class->type->market->participant as $participant) {   
  $participant_attributes = $participant->attributes();  

    echo "<tr>";
      // EVENT NAME
      echo "<td>";
        echo "<a href=".$market_attributes['url'].">";
        echo $participant_attributes['name'];//participants name
        echo "</a>";
      echo"</td>";

      //ODDS
      echo "<td>";
        echo $participant_attributes['odds'];
      echo "</td>"; 
    echo "</tr>";
  } 
?>

我明白为什么是因为我没有引用事件页面 URL 中的 id。但我不太确定如何做到这一点,知道如何解决这个问题吗?

4

1 回答 1

1

您只需要if在循环中添加一个,以便您只定位与查询字符串中的事件 ID 匹配的事件 ID。还需要一个嵌套循环,因为您想遍历每个市场以找到匹配的id,然后遍历其每个参与者。

  foreach ($xml->response->williamhill->class->type->market as $market) {   

    if($market->attributes()->id == $_GET['id']) {

        foreach($market->participant as $participant) {
            $participant_attributes = $participant->attributes();  

            echo "<tr>";
              // EVENT NAME
              echo "<td>";
                echo "<a href=".$market->attributes()->url.">";
                echo $participant_attributes['name'];//participants name
                echo "</a>";
              echo"</td>";

              //ODDS
              echo "<td>";
                echo $participant_attributes['odds'];
              echo "</td>"; 
            echo "</tr>";
        }

        break; // <-- we've found the target and echo'ed it so no need to keep looping
    }
  } 
于 2013-02-01T16:53:31.650 回答