如果我有一个像下面这样的数组,我将如何将键[2]及其相关值移动到数组的开头? (将其设置为[0]键,并将其他键增加1)
当前:
[0] => Array
(
[name] => Vanilla Coke cans 355ml x 24
)
[1] => Array
(
[name] => Big Red Soda x 24
)
[2] => Array
(
[name] => Reeses White PB Cups - 24 CT
)
所需结果:
[0] => Array
(
[name] => Reeses White PB Cups - 24 CT
)
[1] => Array
(
[name] => Vanilla Coke cans 355ml x 24
)
[2] => Array
(
[name] => Big Red Soda x 24
)
编辑
为澄清起见,我一直想将元素移到数组的开头,但不一定是最后一个元素,有时可以是第3个4th e.c.t.每次都不同。
答案 0 :(得分:2)
为什么不同时使用array_unshift
和array_pop
?
array_unshift($someArray, array_pop($someArray));
array_pop删除最后一个元素,并且array_shift将条目添加到数组中。
答案 1 :(得分:2)
array_splice
从数组中删除(并有选择地替换/插入)值,并返回带有删除项的数组。结合简单的array_unshift
函数,就可以完成这项工作。
$arr = [1,2,3,4,5];
function array_move_item_as_first(array $array, int $idx) : array
{
array_unshift( $array, array_splice($array, $idx, 1)[0] );
return $array;
}
print_r(array_move_item_as_first($arr, 2));
输出:
Array
(
[0] => 3
[1] => 1
[2] => 2
[3] => 4
[4] => 5
)