PHP if条件和foreach内部

PHP if条件和foreach内部,php,Php,我不明白为什么我的条件不起作用 从该html页面: 我正试图提取诸如奥运会版本、试用名称等信息。 我用以下代码提取男子赛事: $html=file_get_html('http://www.olympic.org/olympic-results/london-2012/archery'); foreach($html->find('div') as $element) { if ($element->id == 'gamesSelect') {

我不明白为什么我的条件不起作用

从该html页面:

我正试图提取诸如奥运会版本、试用名称等信息。 我用以下代码提取男子赛事:

$html=file_get_html('http://www.olympic.org/olympic-results/london-2012/archery');


foreach($html->find('div') as $element) {

    if ($element->id == 'gamesSelect')
    {
        $Game =  $element->find('option[selected]', 0)->plaintext . '<br>'; 
    }   

    if ($element->id == 'sportSelect')
    {

        $Sport =  $element->find('option[selected]', 0)->plaintext . '<br>'; 
    }

    if ($element->class == 'man')
    {
        foreach($html->find('span.trial_name') as $e_trial)
        {

          $Event = $e_trial->innertext . '<br>';

        }
    }
}
$html=file\u get\u html('http://www.olympic.org/olympic-results/london-2012/archery');
foreach($html->find('div')作为$element){
如果($element->id='gamesSelect')
{
$Game=$element->find('option[selected]',0)->纯文本。
; } 如果($element->id='sportSelect') { $Sport=$element->find('option[selected]',0)->纯文本。
; } 如果($element->class=='man') { foreach($html->find('span.trial\u name')作为$e\u trial) { $Event=$e_-trial->innertext.“
”; } } }
在最后一个if条件中,我放置了一个foreach循环,以便仅提取此文本:

男子个人赛(FITA奥林匹克赛-70米)男子团体赛(FITA奥林匹克赛) 圆形(70米)

但事实上,我得到了所有四个审判事件:

男子个人赛(FITA奥林匹克赛-70米)男子团体赛(FITA奥林匹克赛) 女子个人赛(FITA奥林匹克赛-70米)女子个人赛 代表队(FITA奥运会一轮-70米)

为什么会有这种行为?我不明白,因为只有男性才有if条件。如何修复此问题?

尝试以下方法:

$html=str_get_html(file_get_html('http://www.olympic.org/olympic-results/london-2012/archery'));


    foreach($html->find('div') as $element) {

        if ($element->id == 'gamesSelect')
        {
            $Game =  $element->find('option[selected]', 0)->plaintext . '<br>';
        }

        if ($element->id == 'sportSelect')
        {

            $Sport =  $element->find('option[selected]', 0)->plaintext . '<br>';
        }

        if ($element->class == 'man')
        {
           foreach($element->find('span.trial_name') as $e_trial)
            {

              $Event = $e_trial->innertext . '<br>';

            }
        }
$html=str\u get\u html(文件\u get\u html('http://www.olympic.org/olympic-results/london-2012/archery'));
foreach($html->find('div')作为$element){
如果($element->id='gamesSelect')
{
$Game=$element->find('option[selected]',0)->纯文本。
; } 如果($element->id='sportSelect') { $Sport=$element->find('option[selected]',0)->纯文本。
; } 如果($element->class=='man') { foreach($element->find('span.trial\u name')作为$e\u trial) { $Event=$e_-trial->innertext.“
”; } }
好的,解决问题后,我继续使用脚本添加以下代码:

$html=file_get_html('http://www.olympic.org/olympic-results/london-2012/archery');


foreach($html->find('div') as $element) {

    if ($element->id == 'gamesSelect')
    {
        $Game =  $element->find('option[selected]', 0)->plaintext . '<br>'; 
    }   

    if ($element->id == 'sportSelect')
    {

        $Sport =  $element->find('option[selected]', 0)->plaintext . '<br>'; 
    }

    if ($element->class == 'man')
    {
        foreach($html->find('span.trial_name') as $e_trial)
        {

          $Event = $e_trial->innertext . '<br>';

        }
    }
}
$html=文件获取html(“”)

foreach($html->find('div')作为$element){

if($element->id=='gamesSelect')
{
$Game=$element->find('option[selected]',0)->纯文本。
; } 如果($element->id='sportSelect') { $Sport=$element->find('option[selected]',0)->纯文本。
; } 如果($element->class=='man') { foreach($element->find('span.trial\u name')作为$e\u trial) { $Event=$e_-trial->innertext.“
”; 如果($element->class==“金牌”) { foreach($element->find('td.name')作为$e_name) { $Name=$e_Name->innertext.“
”; echo$Name; } } } }
}


我不明白如何在最后一个if条件下让它进入。它与另一个if($element->class='man')不一样吗?

你不应该搜索
元素而不是
html
?这是正确的@RST。而不是foreach($html->find('span.trial\u name')作为$e\u trial)尝试使用foreach($element->find('span.trial\u name'))as$e_(试用版)