PHP цикл с установленными интервалами - PullRequest
0 голосов
/ 26 марта 2011

У меня есть следующий код, который преобразует мой RSS-канал в Твиттере в строку, чтобы я мог проанализировать имена пользователей моих подписчиков.

$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, я возвращаю все 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 ]

1 голос
/ 26 марта 2011

array_slice () всегда приятно. Может быть, что-то вроде этого:

for($offset = 0; $offset < count($array); $offset += 5){
    $slice = array_slice($array, $offset, 5);
    // Do your stuff
}
0 голосов
/ 26 марта 2011
$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 именами пользователей и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...