training-web.ruГлавнаяКатегорииО насКарта сайтаПоискТёмная тема

Категории

Как изменить позицию элемента массива PHP

Создано: 26 декабря 2015Автор: Егор Астапов2713 просмотровСложность: легкий

Как изменить позицию элементов массива с определённого ключа PHP. Способов несколько. Я долго думал как сделать подобный скрипт. В итоге придумал функцию для смены позиции. В результате работы функции позиция элемента меняется, а следующие элементы массива сдвигаются на один шаг. Не важно где будет элемент массива! Функция пересчитает ключи массива.


$arr = range(1, 10);
/*
change_position()
$arr - основной массив, ключ - позиция, значение - id
$num - номер, который нужно переместить
$pos - позиция, куда нужно переместить
*/
function change_position($arr, $num, $pos)
{	
	$pos -= 1;
	$select_arr[] = $arr[$num];
	unset($arr[$num]);
	$arr1 = array_slice($arr, 0, $pos);
	$arr2 = array_slice($arr, $pos);
	$arr = array_merge($arr1, $select_arr, $arr2);	
	// добавляем 1 к каждому ключу, первый ключ массива равен 1
	foreach($arr as $k => $v)
        {
          $arr_plus[$k + 1] = $v;
          unset($arr[$k]);
        }	
        // в этом случае первый ключ будет равен 0	
	//$arr_plus = array_values($arr);
	 return $arr_plus;
}
$arr1 = change_position($arr, 1, 5);
//print_r($arr);
print_r($arr1);
/*
Вывод:
Array
(
    [1] => 1
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 2
    [6] => 6
    [7] => 7
    [8] => 8
    [9] => 9
    [10] => 10
)
*/

Обратите внимание на вывод массива. Переданная третьим входным параметром число 5 изменит положение значения массива. Половина ключей (6-10) пересчитается. Весь фокус в том, что массив разрезается на 2 части. Потом между двумя отрезанными массивами вставляем элемент массива. Далее происходит сборка всех 3 массивов. О массивах PHP читайте в статье массив в PHP

Комментарии

реклама