голосование
PHP
jQuery
Firebird
BASH
HTML
Ресурсы
GIT
SEO
Oracle
Python
Программы
Хостинг
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

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

Как изменить позицию элементов массива с определённого ключа 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

просмотры: 794, уровень: лёгкий уровень, рейтинг: 0, дата: 2015-12-26 12:35:22
проголосовать:

Комментарии:






поиск
сайты друзей
банеры
сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
http://ping-admin.ru/index_5659.html мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
http://www.2domains.ru домен RU домен RU всего за 99 рублей
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.