Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проблема с записью в массив результатов Simple HTML DOM
Форумы портала PHP.SU » » Вопросы новичков » Проблема с записью в массив результатов Simple HTML DOM

Страниц (1): [1]
 

1. VirtualMan - 21 Июля, 2016 - 14:19:15 - перейти к сообщению
Доброго времени суток.

Прошу помощи вожусь день не могу найти решение:
Выборку делаю при помощи библиотеки - PHP Simple HTML DOM Parser

Все в порядке кроме одного, когда хочу урлы со страницы сохранить в массив
Сохраняет только последнее значение.

---
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. foreach  ($html->find('td[style="font-family:Arial;vertical-align:left;"]', 0)->parent()->find('a') as $element) {
  4. echo $element->href  . '<br>'; // на экран выводит все как надо
  5.  
  6.     $url = $element->href;
  7.     // settype($url, "string"); пробовал присваивать принудительно тоже нулевой эффект
  8.     $arrayurl = array();
  9.     $arrayurl[] = "{$url}"; // пробовал присваивать просто переменную $url
  10.  
  11. }
  12. print_r ($arrayurl); // выводит только Array ( [0] => со значением последней строки.
  13.  


Что я делаю не верно?
2. Мелкий - 21 Июля, 2016 - 14:42:42 - перейти к сообщению
VirtualMan пишет:
$arrayurl = array();

Вы понимаете:
а) что делает эта строка?
б) где именно она находится?
в) комбинированный эффект пунктов а и б?
3. Строитель - 21 Июля, 2016 - 14:50:39 - перейти к сообщению
VirtualMan пишет:
Что я делаю не верно?
PHP:
скопировать код в буфер обмена
  1. // Массив объявлять надо ВНЕ цикла
  2. $arrayurl = array();
  3.  
  4. // Так же и с объявлением переменной, если к ней
  5. // будет применяться конкатенация - объявить перед циклом
  6. $url = '';
  7.  
  8. foreach ($html->find('td[style="font-family:Arial;vertical-align:left;"]', 0)->parent()->find('a') as $element) {
  9.     // Сохранить в массив :
  10.     $arrayurl[] = $element->href;
  11.    
  12.     // Сохранить в переменную ("." - оператор конкатенации)
  13.     $url .= $element->href;
  14. }
  15.  
  16. echo '<pre>'; var_dump($arrayurl, $url);
4. VirtualMan - 21 Июля, 2016 - 18:03:50 - перейти к сообщению
Строитель пишет:
// Массив объявлять надо ВНЕ цикла
$arrayurl = array();


Спасибо эту ошибку я как раз и не мог понять.
Получалось, что я присваивал каждый раз пустое значение массива.
Вопрос закрыт

 

Powered by ExBB FM 1.0 RC1