php循环函数中的多个返回

问题描述

我正在构建一个网络爬虫,在其中循环浏览多页,每页20个项目。

我可以返回此值还是应该使用echo?我现在使用echo,但想切换回去以对每个文件输出进行更多控制(在多个页面中使用此功能)。

function function1(){
    $link = $url;
    $url_items = $url2;
    for($pageNr=1; $pageNr<11; $pageNr++){
        $client = new \GuzzleHttp\Client(['base_uri' => $link]);
        $response = $client->request('GET','/zoeken',[
            'query' => [
                'page' => $pageNr
            ]
        ]);
        if($response->getStatusCode() === 200){
            echo "Pagina: " . $pageNr . "<br/>";
            for($item = 1; $item <=20; $item++){
                $url = $url . "?" . $pageNr;
                $html = file_get_html($url);
                if(!empty($html)){
                    $content = $html->find("#resultitem-$item",0)->find('.item-description2',0)->find('.title',0)->find('a',0)->plaintext;
                    $content_url = $html->find("#resultitem-$item",0)->getAttribute('href',0);
                    if(!empty($content)){
                        echo $item . ". <a href='" . $url_items . $content_url .  "'>" . $content ."</a><br/>";
                    }
                }
            }
        }
        sleep(2);
    }
}

我正在回显链接,但我只需要这些值,以便可以在其他页面中对其进行控制。

我想返回$content$content_url,如何更改为返回?

解决方法

制作一个数组,然后返回它。

以您的情况为例:

function function1(){
    $link = $url;
    $url_items = $url2;
    $dataArr = array();
    for($pageNr=1; $pageNr<11; $pageNr++){
        $client = new \GuzzleHttp\Client(['base_uri' => $link]);
        $response = $client->request('GET','/zoeken',[
            'query' => [
                'page' => $pageNr
            ]
        ]);
        if($response->getStatusCode() === 200){
            $data['pageNo'] = $pageNr;
            for($item = 1; $item <=20; $item++){
                $url = $url . "?" . $pageNr;
                $html = file_get_html($url);
                if(!empty($html)){
                    $content = $html->find("#resultitem-$item",0)->find('.item-description2',0)->find('.title',0)->find('a',0)->plaintext;
                    $content_url = $html->find("#resultitem-$item",0)->getAttribute('href',0);
                    if(!empty($content)){
                        $data['content']        = $content;
                        $data['content_url']    = $content_url;
                        array_push($dataArr,$data);
                    }
                }
            }
        }
        sleep(2);
    }
    return $dataArr;
}