如何解决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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。