为什么PHP不继续通过这些网址?

时间:2013-03-01 00:06:24

标签: php json foreach screen-scraping

我有以下PHP。基本上,我从一个网站的多个页面获得类似的数据(当前拥有一堆棒球运动员档案的网站的本垒打数量)。我带来的JSON拥有我想要抓取的所有不同配置文件的所有URL,因此我需要PHP来运行URL并获取数据。但是,以下PHP仅从第一个URL获取信息。我可能犯了一个愚蠢的错误。任何人都可以看到为什么它没有通过所有的URL?

        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;
        }

3 个答案:

答案 0 :(得分:3)

等等......你正在使用return $ html。为什么?返回将打破你的功能,从而阻止你的foreach。

如果您确实试图从函数中获取所有元素的$html,则应将每个$html推入一个数组,然后在循环后返回该数组。

答案 1 :(得分:0)

因为你returnreturn保留当前的方法,函数或脚本,其中包括每个循环。使用PHP5.5,您可以使用yield让函数像生成器一样运行,但现在这绝对不在范围内。

答案 2 :(得分:0)

除非你的大括号关闭,否则你会在循环的最后返回,所以循环永远不会迭代。