Правила инициализации переменных и области видимости PHP довольно забавные.
Ни в коем случае вы не инициализируете $table
.Сначала он ссылается на две глубины.PHP допускает это и не будет жаловаться на это.
Проблема в том, что вы постоянно пытаетесь установить его значение, но вы никогда не сбрасываете его .
Инициализируйте его как null
перед внутренним foreach
:
$html = file_get_html($link );
$table = null; // <-- New!
foreach($html->find('h3') as $element) {
$table = $element;
echo $table;
}
Это гарантирует, что, когда foreach
завершится, $table
будет либо null
, либоэто будет последний элемент H3 в выбранном вами HTML-документе.(Кстати, если вы действительно хотели получить последний H3, вы, вероятно, можете просто взять массив, который возвращает find
, и посмотреть на последний элемент, а не проходить по нему.)
Также, пожалуйста, избавьтесь от @
операторы, подавляющие ошибки, включите error_reporting
полностью и убедитесь, что вы включили display_errors
.У вас могут быть другие ошибки, скрывающиеся в том, что вы намеренно игнорируете, что приводит к ужасным историям.