如何在 foreach 循环中创建数组?
How to create array in foreach loop?
我正在使用 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);
如果我回显 $time 或 $text 我总是能成功获取数据。
我找到问题所在了。
每次调用 file_get_html 或 str_get_html 时,简单 HTML DOM 解析器不会清理 DOM 中的内存,因此需要每次完成当前 DOM.
时都会显式完成
所以我添加了 $html->clear();在循环结束时。
我正在使用 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);
如果我回显 $time 或 $text 我总是能成功获取数据。
我找到问题所在了。
每次调用 file_get_html 或 str_get_html 时,简单 HTML DOM 解析器不会清理 DOM 中的内存,因此需要每次完成当前 DOM.
时都会显式完成所以我添加了 $html->clear();在循环结束时。