Я не понимаю, почему мое if-условие не работает.PHP, если условие и foreach внутри
С этой страницы 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>';
}
}
}
В последнем последнем условии я поставил цикл foreach, чтобы извлечь только этот текст:
Мужской Индивидуальный (FITA Олимпийский раунд - 70 м) команда для мужчин (FITA Olympic раунда - 70 м)
Но на самом деле я получаю все четыре пробные мероприятия:
Мужской Индивидуальный (FITA Олимпийского раунда - 70 м) Команда для мужчин (FITA Олимпийский раунд - 70 м) Женская индивидуальная (FITA Олимпийский раунд - 70 м) Женская Team (FITA Олимпийский раунд - 70 м)
Почему такое поведение? Я не понимаю, так как есть условие, только для мужчин. Как я могу это исправить?
Разве вы не ищете 'element' вместо' html'? – RST
Правильно @RST. вместо foreach ($ html-> find ('span.trial_name') в качестве $ e_trial) попробуйте использовать foreach ($ element-> find ('span.trial_name') как $ e_trial) –