Запись цикла строк в массив

253
19 декабря 2016, 19:36
function links(){
    $html = new simple_html_dom();
    $html->load_file($this->url);
    $arr = array();
    foreach ($html->find('td[width=100%]') as $e) {
        $td = $e->innertext;
        $arr[] = $td;
    }
    foreach ($html->find('a') as $e) {
        $href = $e->href;
        $page = stristr($href, "page");
        $main = iconv('Windows-1251', 'UTF-8', $arr[2]);
        $page1 = stristr($main, $page);
        if ($page1 !== false) {
            $query = $this->pdoselect("*", "compr_pages", "page like '$page'");
            $pg = '';
            while ($fetch = $query->fetch(PDO::FETCH_ASSOC)) {
                if ($fetch['page'] == $page) {
                $pg = $page;
                }
            }
            if ($page == $pg) {
                break;
            }
            else {
                $pagearr = array($page);
                $lastpage = array();
                $lastpage = array_merge($pagearr);
                print_r ($lastpage);
                echo '<br/>';
      }
        }
        }

}

`

Возвращает мне цикл строк такого вида:

Array ( [0] => page_36514.htm ) Array ( [0] => page_36511.htm ) Array ( [0] => page_36510.htm ) Array ( [0] => page_36512.htm ) Array ( [0] => page_36508.htm )

Но я всё не могу объединить результат выполнения этого кода в один массив, пробовал через foreach, но не выходит.

Использую библиотеку парсера SIMPLE_HTML_DOM

Answer 1

Воспользуйтесь методом array_push($arr, $link), а после этого возвращайте массив с значениями, которые Вам нужны.

function ($links) {
    $arr = [];
    foreach ($links as $link) {
        array_push($arr, $link);
    }
    return $arr; 
}
Answer 2

Ваш код ничего вам не возвращает, просто выводит массивы с одним значением которое вы же туда и засунули $pagearr = array($page);. Перед foreach ($html->find('a') as $e) { создайте массив $pages = []; И в него добавляйте данный, за приделами цикла выведите его:

$pages = [];
foreach ($html->find('a') as $e) {
    ...
    $pages[] = $page;
    ...
}
print_r($pages);
READ ALSO
Эмуляция mod_deflate средствами PHP

Эмуляция mod_deflate средствами PHP

По определенным причинам я не могу использовать ни mod_deflate, ни mod_gzipПоэтому я пытаюсь реализовать его работу средствами PHP

209
Как держать сессии во всех браузерах?

Как держать сессии во всех браузерах?

Веб-приложение для ВК на Laravel, Nginx, PHP-FPMПосетитель приходит с ключом в GET-параметрах, сервер проверяет валидность ключа, и если ключ валидный,...

230
Хотелось бы получить критику на данный код

Хотелось бы получить критику на данный код

Это использование паттерна "Фабрика", прошу помощи понять, правильно ли я его использую

236
Передать другой формат даты в MySQL [дубликат]

Передать другой формат даты в MySQL [дубликат]

На данный вопрос уже ответили:

184