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

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

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

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

Пример

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

<?php $array = array( 0 => 'Клавиатура', 1 => 'Монитор', 2 => 'Мышь', 3 => 'Модем', 4 => 'Системный блок' ); // вывод исходного массива print_r($array); // Меняем местами нулевое и четвертое значения массива list($array[0], $array[4]) = array($array[4], $array[0]); // вывод измененного массива print_r($array);

Результат

Array ( [0] => Клавиатура [1] => Монитор [2] => Мышь [3] => Модем [4] => Системный блок ) Array ( [0] => Системный блок [1] => Монитор [2] => Мышь [3] => Модем [4] => Клавиатура )

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

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

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

Пример

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

<?php $array = array( 0 => 'Клавиатура', 1 => 'Монитор', 2 => 'Мышь', 3 => 'Модем', 4 => 'Системный блок' ); // вывод исходного массива print_r($array); // Меняем местами первое и третье значения массива $buf = $array[1]; $array[1] = $array[3]; $array[3] = $buf; // вывод измененного массива print_r($array);

Результат

Array ( [0] => Клавиатура [1] => Монитор [2] => Мышь [3] => Модем [4] => Системный блок ) Array ( [0] => Клавиатура [1] => Модем [2] => Мышь [3] => Монитор [4] => Системный блок )

Функция array_swap()

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

<?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; }

Пример

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

<?php $array = array( 0 => 'Клавиатура', 1 => 'Монитор', 2 => 'Мышь', 3 => 'Модем', 4 => 'Системный блок' ); // вывод исходного массива print_r($array); // Меняем местами первое и четвертое значения массива array_swap($array, 1, 4); // вывод измененного массива print_r($array);

Результат

Array ( [0] => Клавиатура [1] => Монитор [2] => Мышь [3] => Модем [4] => Системный блок ) Array ( [0] => Клавиатура [1] => Системный блок [2] => Мышь [3] => Модем [4] => Монитор )

Заключение

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

Категории

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

Читайте также

Комментарии