我有一个非常奇怪的问题与range();根据文档:
Create an array containing a range of elements
但是当我这样做的时候:
foreach (range(900,950,1) as $art_id){
//ob_start();
//do stuff
//do a lot more stuff
echo $art_id;
//ob_get_clean(); }
甚至
$arts_id = range (900, 920);
foreach ($arts_id as $art_id){
//ob_start();
//do stuff
//do a lot more stuff
echo $art_id;
//ob_get_clean(); }
输出奇怪地在一系列中重复自己,如
"900,900,901,900,901,902,900,901,9002,903,900..."
表示每次循环后返回到第一个ID。
(1st iteration -> 900
2nd iteration -> 900,901
3rd iteration -> 900,901,902
...)
当我把一个手动数组,它工作完美的顺序,没有重复:
$arts_id = array(900,901,902,903,904,905,906,907,908,909,910...);
我又做错了什么??
编辑我
下面是整个脚本:
http://pastebin.com/ZHm3ub6n它实际上是simplehtmldom脚本中包含的斜线点抓取示例的稍微修改版本。没什么特别的。
它必须在您的其余代码中,因为它工作得很好。请分享更多的脚本。
看起来foreach嵌套在一个类似的foreach
$arts_id = range (900, 920);
foreach ($arts_id as $art_id){
foreach (range (900,$art_id) as $art_id2){
echo $art_id2."<br/>";
}
}
这会产生您所描述的输出
编辑
我个人会添加函数scraping_slashdot重置变量$ret,以防万一。
例如:$ret = array();
当前$output的回显在循环中,它创建了如下输出:
Article 1
Article 1, Article 2
Article 1, Article 2, Article 3
etc.
放置echo $output在循环外,或者$output = ";