Смена позиции элемента массива php

214
04 февраля 2018, 02:26

Как из массива а сделать массив b наиболее эффективно?

a = array(1,3,4,2,5,6);
b = array(1,3,5,4,2,6);

То есть нужно сменить положение одного элемента, но при этом не менять порядок следования других. В примере: 5 становиться в новую позицию после 1 и 3. Причем нужен такой способ (функция), что б работала и при перестановки элементов как "вперед" так и "назад"!

Например,

 array
(
    4 => '4743'
    5 => '4738'
    6 => '4650'
    7 => '4765'
    8 => '4778'
    9 => '4748'
    10 => '4749'
    11 => '4647'
    12 => '4776'
    13 => '4741'
    14 => '4773'
)
 array
(
    4 => '4738'
    5 => '4650'
    6 => '4765'
    7 => '4778'
    8 => '4748'
    9 => '4749'
    10 => '4647'
    11 => '4776'
    12 => '4743'
    13 => '4741'
    14 => '4773'
)

элемент 4743(место 4) из первого массива занимает место 12

Answer 1

Для подобных манипуляций есть функция array_splice, она позволят вставлять и извлекать элементы из массива с и по определенным позициям. И возвращает те самые элементы.

$a = array(1,3,4,2,5,6);
$from = 4;
$to = 2;
array_splice($a, $to, 0, array_splice($a, $from, 1));
var_dump($a);

В данном случае индекс 5 - 4, индекс нужной позиции 2. Извлекаем пятерку и вставляем в нужную позицию.

READ ALSO
PHP ООП, статические функции [дубликат]

PHP ООП, статические функции [дубликат]

На данный вопрос уже ответили:

172
Ошибка “Unknown column in 'where clause' ”

Ошибка “Unknown column in 'where clause' ”

Ситуация: есть таблица, которая связана еще с несколькими по ключуВ основной таблице находится id города (ID_City), в связанной - сам город (City)

198
Синтаксическая ошибка qtranslate

Синтаксическая ошибка qtranslate

Добрый день! Не могу добавить несколько языков в строку с помощью плагина qtranslate

196
PHP код на странице или ajax?

PHP код на странице или ajax?

Можно ли заменить php код на странице на ajax запросы? Те

226