PHP中最优雅的方法是将按键选择的数组元素移动到第一个位置?
输入:
$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;
答案 0 :(得分:30)
$new_value = $arr[n];
unset($arr[n]);
array_unshift($arr, $new_value);
答案 1 :(得分:8)
无需取消密钥。为了做到简短,请按以下步骤进行操作
//appending $new in our array
array_unshift($arr, $new);
//now make it unique.
$final = array_unique($arr);
<强> Demo 强>
答案 2 :(得分:7)
老问题,已经回答了,但是如果你有一个关联数组,你可以使用array_merge。
$arr = array_merge([$key=>$arr[$key]], $arr);
EDITED(上面显示PHP7 +表示法,下面是示例)
$arr = ["a"=>"a", "b"=>"b", "c"=>"c", "d"=>"d"];
$arr = array_merge(["c"=>$arr["c"]], $arr);
此操作的有效结果
$arr == ["c"=>"c", "a"=>"a", "b"=>"b", "d"=>"d"]
答案 3 :(得分:6)
这样的事情应该有效。检查数组键是否存在,获取其值,然后unset
,然后使用array_unshift
再次创建项目并将其放在开头。
if(in_array($key, $arr)) {
$value = $arr[$key];
unset($arr[$key]);
array_unshift($arr, $value);
}
答案 4 :(得分:3)
<?php
$key = 10;
$arr = array(0,1,2,3);
array_unshift($arr,$key);
var_dump($arr) //10,0,1,2,3
?>
答案 5 :(得分:2)
$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
答案 6 :(得分:1)
由于任何数字键都会使用array_unshift
重新编制索引(如上所述in the doc),因此最好使用+
数组联合运算符来移动具有某个键的项目数组的第一个位置:
$item = $arr[$key];
unset($arr[$key]);
$arr = array($key => $item) + $arr;
答案 7 :(得分:0)
$tgt = 10;
$key = array_search($tgt, $arr);
for($i=0;$i<$key;$i++)
{
$temp = $arr[$i];
$arr[$i] = $tgt;
$tgt = $temp;
}
在这个简单的代码之后,您需要做的就是显示重新排列的数组。 :)