在PHP中将数组元素移动到顶部

Val*_*Val 12 php arrays element

$arr = array(
    'a1'=>'1',
    'a2'=>'2'
);
Run Code Online (Sandbox Code Playgroud)

我需要将a2移动到顶部,以及保持a2关键如何继续关于它我似乎无法想办法没有弄乱的东西:)

ama*_*nov 51

这是一个解决方案,它可以正确使用数字和字符串键:

function move_to_top(&$array, $key) {
    $temp = array($key => $array[$key]);
    unset($array[$key]);
    $array = $temp + $array;
}
Run Code Online (Sandbox Code Playgroud)

它的工作原理是因为PHP中的数组是有序映射.
顺便说一下,将物品移到底部使用:

function move_to_bottom(&$array, $key) {
    $value = $array[$key];
    unset($array[$key]);
    $array[$key] = $value;
}
Run Code Online (Sandbox Code Playgroud)


Mic*_*ter 11

你可以这样做:

$arr = array(
    'a1'=>'1',
    'a2'=>'2'
);

end($arr);

$last_key     = key($arr);
$last_value   = array_pop($arr);
$arr          = array_merge(array($last_key => $last_value), $arr);

/*
    print_r($arr);

    will output (this is tested):
    Array ( [a2] => 2 [a1] => 1 )
*/
Run Code Online (Sandbox Code Playgroud)

  • 这没有规模。如果您有一个包含5个键的数组,并且想将第3个键移到顶部怎么办? (2认同)

jal*_*ari 5

尝试这个:

$key = 'a3';
$arr = [
    'a1' => '1',
    'a2' => '2',
    'a3' => '3',
    'a4' => '4',
    'a5' => '5',
    'a6' => '6'
];
if (isset($arr[ $key ]))
    $arr = [ $key => $arr[ $key ] ] + $arr;
Run Code Online (Sandbox Code Playgroud)

结果:

array(
    'a3' => '3',
    'a1' => '1',
    'a2' => '2',
    'a4' => '4',
    'a5' => '5',
    'a6' => '6'
)
Run Code Online (Sandbox Code Playgroud)