Изменить порядок массива php

Помогите пожалуйста с решением простой задачи.

Есть массив чисел в строгом порядке от 1:

$array = [1,2,3,4];

и есть например число с которого эта последовательность должна начинаться, например 3. Как получить на выходе вот такой результат?

$array = [3,4,1,2];

или если например 4, то последовательность:

$array = [4,1,2,3];

2 соответсвенно:

$array = [2,3,4,1];

Примечание: числа это сезоны года. Нужно от текущего сезона начинать)

Помогите пожалуйста)


Ответы (3 шт):

Автор решения: 4500zenja

Это можно сделать, создав функцию, которая будет проверять первый элемент массива на требуемую цифру, а затем последовательно сдвигать массив вправо через array_pop() (удаляет последний элемент массива) и array_unshift() (добавляет в начало массива некоторый элемент).

<?php

function array_pop_unshift($array, $num) {
    while ($array[0] !== $num) {
        array_unshift($array, array_pop($array));
    }
    return $array;
}

$array = [1,2,3,4];
$new = array_pop_unshift($array, 4);
print_r($new);
→ Ссылка
Автор решения: teran

я вас, наверное, удивлю, но для 4х сезонов решение будет простым как валенок, и не надо его усложнять:

$seasons = [
     1 => [1,2,3,4],
     2 => [2,3,4,1],
     3 => [3,4,1,2],
     4 => [4,1,2,3],     
  ];
print_r($seasons[$needle]);
→ Ссылка
Автор решения: Jigius

Более короткий вариант решения:

<?php
print_r(array_slice([1,2,3,4,1,2,3], $num - 1, 4));
→ Ссылка