如何在foreach循环中创建数组?

3
我正在使用PHP HTML DOM解析器从另一个网站获取数据。首先,我会获取该网站上我的交易URL,然后我会发送另一个请求到每个交易URL以获取评论。我想创建一个评论数组,以便稍后对它们进行排序。为什么我无法创建数组?
它看起来像这样:
include_once('simple_html_dom.php');
$result = array();
$html = file_get_html('http://csgolounge.com/profile?id='.$steamid);

foreach($html->find('div.tradepoll') as $trade) 
    {
    $tradeid = $trade->find('.tradeheader')[0]->find('a')[0]->href;
    $html = file_get_html('http://csgolounge.com/'.$tradeid);       

        foreach($html->find('div.message') as $message)
        {

        if($message->find('p',0)){}

        else
           {                    
            $left = $message->find('.msgleft')[0];
            $right = $message->find('.msgright')[0];

            //information about comments
            $time = trim(strip_tags_content($left->innertext));
            $text = $left->find('.msgtxt')[0];

            $result[$time]['time'] = $time;
            $result[$time]['text'] = $text;                     
           }

        }

    }

    echo json_encode($result);

如果我使用echo $time或者$text,我总是能成功地获取数据。

那么问题出在哪里呢?$result是你想要的数组,不是吗?我有点困惑。 - Alive to die - Anant
是的,我想在foreach循环中创建带有注释的数组。问题是echo json_encode($result);没有返回任何内容。 - ToniD
如果你 var_dump($result);,它是否符合你的预期?也许 json_encode 在非 utf-8 编码上出现了问题。 - Progrock
1个回答

0

我找到了问题所在。

简单的HTML DOM解析器在每次调用file_get_html或str_get_html时不会清理DOM中的内存,因此每次完成当前DOM后都需要显式地进行清理。

所以我在循环结束时添加了$html->clear();

致谢:electrictoolbox.com


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接