Переместить элемент массива с определенным ключом в первую позицию в массиве, PHP

Какой самый элегантный способ в PHP перемещать элемент массива, выбранный ключом, в первую позицию?

Input:

$arr[0]=0;
$arr[1]=1;
$arr[2]=2;
....
$arr[n]=n;
$key=10;

Вывод:

$arr[0]=10;
$arr[1]=0;
$arr[2]=1;
$arr[3]=2;
....
$arr[n]=n;

Ответы

Ответ 1

Не нужно отменять ключи. Чтобы это было коротко, выполните следующие действия:

//appending $new in our array 
array_unshift($arr, $new);
//now make it unique.
$final = array_unique($arr);

Демо

Ответ 2

Используйте array_unshift:

$new_value = $arr[n];
unset($arr[n]);
array_unshift($arr, $new_value);

Ответ 3

Старый вопрос, и уже ответили, но если у вас есть ассоциативный массив, вы можете использовать array_merge.

$arr = array_merge(array($key=>$arr[$key]), $arr);

Ответ 4

Что-то вроде этого должно работать. Проверьте, существует ли ключ массива, получите его значение, затем unset его, затем используйте array_unshift, чтобы снова создать элемент и поместить его в начале.

if(in_array($key, $arr)) {
    $value = $arr[$key];
    unset($arr[$key]);
    array_unshift($arr, $value);
}

Ответ 5

<?php
$key = 10;
$arr = array(0,1,2,3);
array_unshift($arr,$key);
var_dump($arr) //10,0,1,2,3
?>

Ответ 6

$arr[0]=0;
$arr[1]=1;
$arr[2]=2;
$arr[3]=10;


$tgt = 10;
$key = array_search($tgt, $arr);
unset($arr[$key]);
array_unshift($arr, $tgt);

// var_dump( $arr );
array
0 => int 10
1 => int 0
2 => int 1
3 => int 2

Ответ 7

Так как любой цифровой ключ будет повторно проиндексирован с помощью array_unshift (как указано в документе), лучше использовать + оператор объединения массива для перемещения элемента с определенным ключом в первой позиции массива:

$item = $arr[$key];
unset($arr[$key]);
$arr = array($key => $item) + $arr;

Ответ 8

$tgt = 10;
$key = array_search($tgt, $arr);
for($i=0;$i<$key;$i++)
{
   $temp = $arr[$i];
   $arr[$i] = $tgt;
   $tgt = $temp;
}

После этого простого кода все, что вам нужно сделать, это отобразить повторно настроенный массив.:)