我对 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...);
我做错了什么(又??)
编辑我
这是整个脚本:
它实际上是simplehtmldom中包含的slashdot抓取示例的稍微修改版本。脚本 。没什么特别的。
它在 WP 内部执行,但在循环之外执行..
最佳答案
它必须位于代码的其余部分中,因为这可以正常工作。 请分享更多脚本。
看起来 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 的 echo 位于循环内,它创建如下输出:
Article 1
Article 1, Article 2
Article 1, Article 2, Article 3
etc.
将 echo $output 放在循环之外,或者 $ouptut = '';在循环内。
关于使用 range() 和 foreach 循环的 PHP 数字数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15693956/