Symfony2 DomCrawler每个循环,都不会将新的StdClass对象添加到循环外的对象

Nic*_*iwi 4 php dom symfony laravel

    use Goutte\Client;

    $results = new StdClass;

    $client = new Client();
    $crawler = $client->request('GET', $url);
    $crawler->filter('.div')->each(function ($node) 
    {
        $item = new StdClass;
        $item->test = 'hello';

        $results->data[] = $item;
    });

    var_dump($results);
Run Code Online (Sandbox Code Playgroud)

输出var_dump($results)始终是一个完全空的对象:

object(stdClass)[176]
Run Code Online (Sandbox Code Playgroud)

URL是正确的,过滤器是正确的,该类正在工作,但如果我使用$node和拉取文本形式的HTML它在循环中工作,但数据不会保存在它内$results.

如上例所示,类中的文本'hello' $item甚至不存在于最终$results对象中.

The*_*pha 7

你可以试试这个:

$client = new Client();
$crawler = $client->request('GET', $url);
$results = $crawler->filter('.div')->each(function (Crawler $node, $i) {
    return $node->text();
});
var_dump($results);
Run Code Online (Sandbox Code Playgroud)

查看Symfony网站上的参考资料.