Ответ 1
Не нужно отменять ключи. Чтобы это было коротко, выполните следующие действия:
//appending $new in our array
array_unshift($arr, $new);
//now make it unique.
$final = array_unique($arr);
Какой самый элегантный способ в 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;
Не нужно отменять ключи. Чтобы это было коротко, выполните следующие действия:
//appending $new in our array
array_unshift($arr, $new);
//now make it unique.
$final = array_unique($arr);
Используйте array_unshift
:
$new_value = $arr[n];
unset($arr[n]);
array_unshift($arr, $new_value);
Старый вопрос, и уже ответили, но если у вас есть ассоциативный массив, вы можете использовать array_merge.
$arr = array_merge(array($key=>$arr[$key]), $arr);
Что-то вроде этого должно работать. Проверьте, существует ли ключ массива, получите его значение, затем unset
его, затем используйте array_unshift
, чтобы снова создать элемент и поместить его в начале.
if(in_array($key, $arr)) {
$value = $arr[$key];
unset($arr[$key]);
array_unshift($arr, $value);
}
<?php
$key = 10;
$arr = array(0,1,2,3);
array_unshift($arr,$key);
var_dump($arr) //10,0,1,2,3
?>
$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
Так как любой цифровой ключ будет повторно проиндексирован с помощью array_unshift
(как указано в документе), лучше использовать +
оператор объединения массива для перемещения элемента с определенным ключом в первой позиции массива:
$item = $arr[$key];
unset($arr[$key]);
$arr = array($key => $item) + $arr;
$tgt = 10;
$key = array_search($tgt, $arr);
for($i=0;$i<$key;$i++)
{
$temp = $arr[$i];
$arr[$i] = $tgt;
$tgt = $temp;
}
После этого простого кода все, что вам нужно сделать, это отобразить повторно настроенный массив.:)