将带有某个键的数组项移动到数组中的第一个位置PHP

use*_*748 15 php arrays

PHP中最优雅的方法是将按键选择的数组元素移动到第一个位置?

输入:

$arr[0]=0;
$arr[1]=1;
$arr[2]=2;
....
$arr[n]=n;
$key=10;
Run Code Online (Sandbox Code Playgroud)

输出:

$arr[0]=10;
$arr[1]=0;
$arr[2]=1;
$arr[3]=2;
....
$arr[n]=n;
Run Code Online (Sandbox Code Playgroud)

Yan*_*erk 32

用途array_unshift:

$new_value = $arr[n];
unset($arr[n]);
array_unshift($arr, $new_value);
Run Code Online (Sandbox Code Playgroud)


wp *_*ent 11

无需取消密钥.为了保持简短,请按照以下步骤操作

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

演示

  • 此解决方案仅适用于包含数字的数组并忽略它的键.此外,它正在插入一个新元素,但问题是如何将现有的数组项移动到第一个位置.它显然没有回答这个问题. (2认同)

Jus*_*tin 8

老问题,已经回答了,但如果你有一个关联数组,你可以使用array_merge.

$arr = array_merge([$key=>$arr[$key]], $arr);
Run Code Online (Sandbox Code Playgroud)

EDITED(上面显示PHP7 +符号,下面是示例)

$arr = ["a"=>"a", "b"=>"b", "c"=>"c", "d"=>"d"];
$arr = array_merge(["c"=>$arr["c"]], $arr);
Run Code Online (Sandbox Code Playgroud)

这项行动的有效结果

$arr == ["c"=>"c", "a"=>"a", "b"=>"b", "d"=>"d"]
Run Code Online (Sandbox Code Playgroud)


lee*_*phy 6

这样的事情应该有效.检查数组键是否存在,获取其值,然后unset再使用array_unshift它再次创建项目并将其放在开头.

if(in_array($key, $arr)) {
    $value = $arr[$key];
    unset($arr[$key]);
    array_unshift($arr, $value);
}
Run Code Online (Sandbox Code Playgroud)