Поворот списка - PullRequest
       13

Поворот списка

0 голосов
/ 20 февраля 2011

Как мне повернуть список

Например,

$arr = array(a,b,c,d,e,f,g);

Теперь индекс вращения равен 3. Список следует вращать, начиная с d. Окончательный список должен быть

d e f g a b c

Может кто-нибудь предложить решение для этого? Я не хочу использовать встроенную функцию, и это должно быть сделано на месте.

1 Ответ

11 голосов
/ 20 февраля 2011
$arr = array('a','b','c','d','e','f','g'); 
$i = 3;
$arr2 = array_merge(array_slice($arr, $i), array_slice($arr, 0, $i));

var_dump($arr2);

Другое решение:

$arr = array('a','b','c','d','e','f','g'); 

$arr2 = array();

$shift = 3;

for ($i = $shift; $i < count($arr); $i++) {
    $arr2[] = $arr[$i];
}

for ($i = 0; $i < $shift; $i++) {
    $arr2[] = $arr[$i];
}

var_dump($arr2);

Решение без временного массива:

$arr = array('a','b','c','d','e','f','g'); 

for ($j = 0; $j < 3; $j++) {
    $first_letter = $arr[0];
    for ($i = 1; $i < count($arr); $i++) {
        $arr[$i - 1] = $arr[$i];
    }
    $arr[count($arr) - 1] = $first_letter;
}

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