PHP: «вращать» массив?

можно ли легко «повернуть» массив в PHP?

Например: 1, 2, 3, 4 -> 2, 3, 4, 1

Есть ли какая-то встроенная функция PHP для этого?

Related of "PHP: «вращать» массив?"

Большинство текущих ответов верны, но только если вы не заботитесь о своих показателях:

$arr = array('foo' => 'bar', 'baz' => 'qux', 'wibble' => 'wobble'); array_push($arr, array_shift($arr)); print_r($arr); 

Вывод:

 Array ( [baz] => qux [wibble] => wobble [0] => bar ) 

Чтобы сохранить ваши показатели, вы можете сделать что-то вроде:

 $arr = array('foo' => 'bar', 'baz' => 'qux', 'wibble' => 'wobble'); $keys = array_keys($arr); $val = $arr[$keys[0]]; unset($arr[$keys[0]]); $arr[$keys[0]] = $val; print_r($arr); с $arr = array('foo' => 'bar', 'baz' => 'qux', 'wibble' => 'wobble'); $keys = array_keys($arr); $val = $arr[$keys[0]]; unset($arr[$keys[0]]); $arr[$keys[0]] = $val; print_r($arr); 

Вывод:

 Array ( [baz] => qux [wibble] => wobble [foo] => bar ) 

Возможно, кто-то может сделать поворот более лаконично, чем мой четырехстрочный метод, но это все равно работает.

  $numbers = array(1,2,3,4); array_push($numbers, array_shift($numbers)); print_r($numbers); 

Вывод

 Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 1 ) 

Используйте array_shift и array_push .

Это очень просто и может быть сделано разными способами. Пример:

 $array = array( 'a', 'b', 'c' ); $array[] = array_shift( $array ); 

Используйте array_shift и array_push

Логика заключается в замене элементов. Алгоритм может выглядеть так:

  for i = 0 to arrayLength - 1 swap( array[i], array[i+1] ) // Now array[i] has array[i+1] value and // array[i+1] has array[i] value. 

Нет. Проверьте документацию на array_shift и связанные с ней функции для некоторых инструментов, которые вы можете использовать для записи. В комментариях к этой странице может быть array_rotate функция array_rotate .

Также стоит прочитать функции массива, перечисленные на левой боковой панели, чтобы получить полное представление о том, какие функции массива доступны в PHP.

Метод поддержания ключей и поворота. используя ту же концепцию, что и array_push (array, array_shift (array)), вместо этого мы будем использовать array_merge из 2 array_slices

$x = array("a" => 1, "b" => 2, "c" => 3, 'd' => 4);

Чтобы переместить первый элемент в конец

array_merge(array_slice($x, 1, NULL, true), array_slice($x, 0, 1, true) //'b'=>2, 'c'=>3, 'd'=>4, 'a'=>1

Чтобы переместить последний элемент на передний

array_merge(array_slice($x, count($x) -1, 1, true), array_slice($x, 0, //'d'=>4, 'a'=>1, 'b'=>2, 'c'=>3

 $daynamesArray = array("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"); array_push($daynamesArray, array_shift($daynamesArray)); //shift by one array_push($daynamesArray, array_shift($daynamesArray)); //shift by two print_r($daynamesArray); 

Выход начинается с «среды»:

 Array ( [0] => Wednesday [1] => Thursday [2] => Friday [3] => Saturday [4] => Sunday [5] => Monday [6] => Tuesday 

Используйте встроенную функцию array_reverse . Это самый быстрый способ «повернуть» массив в php.

http://php.net/manual/de/function.array-reverse.php

вы можете использовать эту функцию:

  function arr_rotate(&$array,$rotate_count) { for ($i = 0; $i < $rotate_count; $i++) { array_push($array, array_shift($array)); } } 

Применение:

  $xarr = array('1','2','3','4','5'); arr_rotate($xarr, 2); print_r($xarr); 

результат:

  Array ( [0] => 3 [1] => 4 [2] => 5 [3] => 1 [4] => 2 )