PHP循环设置间隔

时间:2011-03-26 11:37:25

标签: php loops foreach

我有以下代码将我的Twitter帐户rss feed转换为字符串,以便我可以解析我的关注者用户名。

$url = file_get_contents("MY_TWITTER_RSS_FEED_URL_GOES_HERE");
$source = simplexml_load_string($url);

foreach ($source as $match){

    //name of node
    $username = "&nbsp@".$match->author->name;
    //removes the name and parentheses ex.kyrober555 (Robert)
    $usernames = substr($username, 0, strpos($username, ' '));
    //returns usernames only ex.kyrober555
    echo $usernames;
    }

使用foreach循环我从feed中返回所有15个名称,它看起来像这样。

 @ajay54 @marymary770 @funnigurl1209 @jimiwhitten @kyroberthl @tree_bear @crftyldy @sanbrt63 @Sandra516 @DreamFog @KravenSwagNBzz @DreamFog @TheCrippledDuck @TheCrippledDuck @Cass60

现在这就是我想做的事情,但我不确定它是否可能,我不知道我是如何请求你的帮助的。当我为这个php文件加载页面时,它会立即返回所有用户名。我想做的是返回5个用户名,然后做一些事情,然后再返回5个然后再做其他事情,然后返回最后一个5.也许这样的事情,但我不知道......

foreach ($source as $match){
    /* Return the 1st 5 user names */

        /* do some other type of coding */

    /* Return the second set of 5 usernames */

        /* do something here */

    /* return the last 5 usernames */
    }

最终返回所有15个用户名,但不同时间间隔不会同时返回。

2 个答案:

答案 0 :(得分:1)

array_slice()总是很好。这样的事情可能是:

for($offset = 0; $offset < count($array); $offset += 5){
    $slice = array_slice($array, $offset, 5);
    // Do your stuff
}

答案 1 :(得分:0)

$count = 0;
foreach ($source as $match){
    $username = "&nbsp@".$match->author->name;
    $usernames = substr($username, 0, strpos($username, ' '));
    echo $usernames;
    if($count % 5 == 0 && $count > 0) {
        // do something else;
    } 
    $count++;
}

感谢@vichle对你的评论,也许最好使用矩阵呢?

$count = 0;
$userArray = array();    
foreach ($source as $match){
    $username = "&nbsp@".$match->author->name;
    $usernames = substr($username, 0, strpos($username, ' '));
    $userArray[$count % 5][] = $usernames;
    $count++;
}

这段代码可能需要调整,但它是一个开始..现在你在一个数组中有一个数组。 $ userArray [0]将返回一个包含前5个用户名的数组,$ userArray [1]将返回一个包含第二个5个用户名的数组,等等。