为什么不是';PHP是否继续在这些URL中运行?
我有下面的PHP。基本上,我从一个网站的多个页面上获得了类似的数据(一个有很多棒球运动员档案的网站目前的本垒打数量)。我引入的JSON包含了我想要从中获取的所有不同配置文件的所有URL,因此我需要PHP来运行这些URL并获取数据。但是,下面的PHP只从第一个URL获取信息。我可能犯了个愚蠢的错误。有人知道为什么它没有通过所有的URL吗为什么不是';PHP是否继续在这些URL中运行?,php,json,foreach,screen-scraping,Php,Json,Foreach,Screen Scraping,我有下面的PHP。基本上,我从一个网站的多个页面上获得了类似的数据(一个有很多棒球运动员档案的网站目前的本垒打数量)。我引入的JSON包含了我想要从中获取的所有不同配置文件的所有URL,因此我需要PHP来运行这些URL并获取数据。但是,下面的PHP只从第一个URL获取信息。我可能犯了个愚蠢的错误。有人知道为什么它没有通过所有的URL吗 include('simple_html_dom.php'); $json = file_get_contents("http:
include('simple_html_dom.php');
$json = file_get_contents("http://example.com/homeruns.json");
$elements = json_decode($json);
foreach ($elements as $element){
$html = new simple_html_dom();
$html->load_file($element->profileurl);
$currenthomeruns = $html->find('.homeruns .current',0);
echo $element->name, " currently has the following number of homeruns: ", strip_tags($currenthomeruns);
return $html;
}
因为您
返回return
保留包含每个循环的当前方法、函数或脚本。使用PHP5.5,您可以使用yield
使函数的行为类似于生成器,但这显然超出了目前的范围。因为返回
return
保留包含每个循环的当前方法、函数或脚本。使用PHP5.5,您可以使用yield
让函数像生成器一样运行,但这显然超出了目前的范围。等等。。。您正在使用return$html。为什么?Return将中断您的函数,从而停止您的foreach
如果确实要从函数中获取所有元素的$html
,则应将每个$html
推入一个数组,然后在循环后返回该数组。等待。。。您正在使用return$html。为什么?Return将中断您的函数,从而停止您的foreach
如果确实要从函数中获取所有元素的$html
,则应将每个$html
放入一个数组,然后在循环后返回该数组。除非大括号关闭,否则将在循环的最末端返回,这样循环将永远不会迭代。除非大括号关闭,您将在循环的最后返回,这样循环就不会重复。您确定$elements
有多条不同的记录吗?有时候,像这样的小事会让你抓狂。乍一看,您的代码看起来不错。$elements,即JSON,目前包含60个ish条目,所有条目的形式都是{“name”:“exampleName”,“profileurl”:“exampleURL”}
忽略我的评论,因为我没有看到您的返回,这才是真正的问题。您确定$elements
有多个不同的记录吗?有时候,像这样的小事会让你抓狂。乍一看,你的代码看起来不错。$elements,即JSON,目前包含60个ish条目,所有条目的形式都是{“name”:“exampleName”,“profileurl”:“exampleURL”}
忽略我的评论,因为我没有看到你的返回,这才是真正的问题。我花了太长时间才看到它。嗯,如果我放弃返回,我得到以下信息:致命错误:第1333行的/home/username/public_html/simple_html_dom.php中允许的134217728字节内存已耗尽(试图分配32字节)
看起来我们已经解决了一个问题,是时候问另一个问题了。顺便问一下,1333线是什么?我猜是这样的:$html->load_file($element->profileurl)
Hm,如果我去掉返回值,我会得到以下结果:致命错误:第1333行的/home/username/public_html/simple_html_dom.php中允许的内存大小134217728字节(试图分配32字节)看起来我们已经解决了一个问题,现在是时候问另一个问题了。顺便问一下,1333线是什么?我猜是这样的:$html->load_file($element->profileurl)代码>