簡體   English   中英

PHP if條件和foreach里面

[英]PHP if condition and foreach inside

我不明白為什么我的if條件不起作用。

從此html頁面:

http://www.olympic.org/olympic-results/london-2012/archery

我正在嘗試提取奧林匹克版本,審判名稱等信息。我使用以下代碼提取男子比賽:

$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>';

        }
    }
}

在最后一個if條件中,我放置了一個foreach循環以僅提取以下文本:

男子個人(FITA奧林匹克回合-70m)男子團體(FITA奧林匹克回合-70m)

但是實際上我得到了所有四個審判事件:

男子個人(FITA奧林匹克回合-70m)男子團體(FITA奧林匹克回合-70m)女子個人(FITA奧林匹克回合-70m)女子團體(FITA奧林匹克回合-70m)

為什么這種行為? 我不明白,因為只有男人才有這種條件。 我怎樣才能解決這個問題?

嘗試這個 :

$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 = 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>';

       if ($element->class == "medals gold")
       {

           foreach($element->find('td.name') as $e_name)
           {
               $Name = $e_name->innertext . '<br>';
               echo $Name;
           }
       }  


    }
}

}

我不明白如何在最后一個if條件中放進去。 ($ element-> class =='man')是否與另一個不同?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM