Вы можете авторизоваться через ВКонтакте, Фейсбук и оставить комментарий


Поменять местами 2 элемента массива (PHP)

Поменять значения двух элементов массива местами можно двумя способами.

Языковая конструкция list()

В первом способе применяется языковая конструкция list() и определение массива array() из двух значений.

Пример

Например есть массив из 5 элементов, необходимо поменять значения нулевого и четвертого элементов массива.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

$array 
= array(
    
=> 'Клавиатура',
    
=> 'Монитор',
    
=> 'Мышь',
    
=> 'Модем',
    
=> 'Системный блок'
);

// вывод исходного массива
print_r($array);

// Меняем местами нулевое и четвертое значения массива
list($array[0], $array[4]) = array($array[4], $array[0]);

// вывод измененного массива
print_r($array);

Результат

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array
(
    [0] => Клавиатура
    [1] => Монитор
    [2] => Мышь
    [3] => Модем
    [4] => Системный блок
)
Array
(
    [0] => Системный блок
    [1] => Монитор
    [2] => Мышь
    [3] => Модем
    [4] => Клавиатура
)

Промежуточная переменная

В этом способе понадобится промежуточная переменная (буфер).

Способ менее изящен, нежели первый вариант, зато немного быстрее.

Пример

Определим такой же массив как из первого примера, только на этот раз поменяем значения первого и третьего элементов массива.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

$array 
= array(
    
=> 'Клавиатура',
    
=> 'Монитор',
    
=> 'Мышь',
    
=> 'Модем',
    
=> 'Системный блок'
);

// вывод исходного массива
print_r($array);

// Меняем местами первое и третье значения массива
$buf $array[1];
$array[1] = $array[3];
$array[3] = $buf;

// вывод измененного массива
print_r($array);

Результат

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array
(
    [0] => Клавиатура
    [1] => Монитор
    [2] => Мышь
    [3] => Модем
    [4] => Системный блок
)
Array
(
    [0] => Клавиатура
    [1] => Модем
    [2] => Мышь
    [3] => Монитор
    [4] => Системный блок
)

Функция array_swap()

Удобнее описать один раз функцию array_swap(array &$array, $key, $key2).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
/**
 * Функция меняет значения элементов массива $key и $key2 местами
 * @param array $array исходный массив
 * @param $key ключ элемента массива
 * @param $key2 ключ элемента массива
 * @return bool true замена произошла, false замена не произошла
 */
function array_swap(array &$array$key$key2)
{
    if (isset(
$array[$key]) && isset($array[$key2])) {
        list(
$array[$key], $array[$key2]) = array($array[$key2], $array[$key]);
        return 
true;
    }

    return 
false;
}

Пример

Задача поменять местами первое и четвертое значение массива.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

$array 
= array(
    
=> 'Клавиатура',
    
=> 'Монитор',
    
=> 'Мышь',
    
=> 'Модем',
    
=> 'Системный блок'
);

// вывод исходного массива
print_r($array);

// Меняем местами первое и четвертое значения массива
array_swap($array14);

// вывод измененного массива
print_r($array);

Результат

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array
(
    [0] => Клавиатура
    [1] => Монитор
    [2] => Мышь
    [3] => Модем
    [4] => Системный блок
)
Array
(
    [0] => Клавиатура
    [1] => Системный блок
    [2] => Мышь
    [3] => Модем
    [4] => Монитор
)

Заключение

Небольшой эксперимент по скорости выполнения показал, что второй способ работает чуть быстрее, примерно в 1.2 раза.

Опубликовано: 12 ноября 2013  ·  Автор: Артём Фёдоров  ·  11838 просмотров

Категория

ГлавнаяПрограммированиеPHPМассивыПоменять местами 2 элемента массива (PHP)

Чтобы оставить комментарий нужно авторизоваться на сайте
или войти через ВКонтакте или Фейсбук

Войти через ФейсбукВойти через Твиттер

Комментарии

Массивы, PHP, Программирование

© 2010-2017 expange.ru
При полном или частичном копировании статей сайта, ссылка на источник обязательна.

Хотите узнать больше информации, пишите на: artem@expange.ru

Полезное онлайн  ·  Новости  ·  Изображения  ·  Статьи по датам

О проекте  ·  Правила пользования  ·  Представительства

Благодарности и пожелания