Как поменять все четные ключи массива на нечетные и наоборот?

187
18 октября 2017, 07:57

У меня есть массив [1, 2, 3, 4], а нужно получить [2, 1, 4, 3]. Может в php есть готовое решение? А если нет, то можно пожалуйста пример такой функции.

Answer 1

Ещё вариант в коллекцию ответов:

$a_1 = [1, 2, 3, 4, 5, 6, 7];
$a_2 = [];
for ($j = count($a_1), $i = 0, $k = 0; $i < $j; $i++) {
    $k = $i & 1 ? $k - 1 : $i + 1;
    empty($a_1[$k]) ?: $a_2[] = $a_1[$k];
}
echo '<pre>'; print_r($a_2); echo '</pre>';

Результат:

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

Собсно вот. Но здесь я предположил, что в массиве первый ключ 0, пропущенных ключей нет и количество элементов четное. Если количество элементов нечетное, то, во-первых, вылетит notice; во-вторых, предпоследний элемент станет null, а последний - ну тот который был последним в изначальном массиве.

$a = [5, 6, 7, 8, 9, 10 , 11, 12, 13, 14, 15, 16 /*, 17*/];
for($i = 0; $i < count($a) / 2; $i++) {
    $b = $a[$i * 2];
    $a[$i * 2] = $a[$i * 2 + 1];
    $a[$i * 2 + 1] = $b;
}
var_dump($a);
READ ALSO
Joomla. В ставка позиции для модуля

Joomla. В ставка позиции для модуля

JoomlaПодскажите пожалуйста, как создать позицию для модуля или материала

167
Instagram API лайк записи

Instagram API лайк записи

Пытаюсь разобраться с instagram APIМне нужен бот, который будет автоматически ставить всем моим подписчикам лайк

196
OpenCart. Запрос БД. Вывод переменных

OpenCart. Запрос БД. Вывод переменных

ЗдравствуйтеПрошу идеи, предложения или еще что-то по реализации данного вопроса

144
Как разбить строку на элементы массива в зависимости от типа символа PHP

Как разбить строку на элементы массива в зависимости от типа символа PHP

Помогите, пожалуйста, составить универсальное регулярное выражение для разделения строки на числа, сочетания букв идущих подряд и пробел

185