Изменить порядок массива 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 шт):
Это можно сделать, создав функцию, которая будет проверять первый элемент массива на требуемую цифру, а затем последовательно сдвигать массив вправо через 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);
я вас, наверное, удивлю, но для 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]);
Более короткий вариант решения:
<?php
print_r(array_slice([1,2,3,4,1,2,3], $num - 1, 4));