什么是将元素放在PHP数组中间的简单方法? 假设你有一个10元素索引数组,你想把一个元素放在中间某个地方(比如索引3)。然后我想让数组的其余部分移位,因此长度为11个元素。有没有一个简单的方法可以做到这一点

什么是将元素放在PHP数组中间的简单方法? 假设你有一个10元素索引数组,你想把一个元素放在中间某个地方(比如索引3)。然后我想让数组的其余部分移位,因此长度为11个元素。有没有一个简单的方法可以做到这一点,php,arrays,Php,Arrays,我很惊讶没有put()函数之类的东西 我知道将array\u-splice和array\u-merge结合起来很容易做到这一点,但我只是想知道是否有更简单的方法。 不幸的是,您的最佳选择是您在文章中描述的内容。目前没有PHP函数可以处理此问题。然而,自己动手并不难: function array_insert(&$array, $insert, $position) { $c = count($array); $slice = array_merge($insert, a

我很惊讶没有
put()
函数之类的东西

我知道将
array\u-splice
array\u-merge
结合起来很容易做到这一点,但我只是想知道是否有更简单的方法。


不幸的是,您的最佳选择是您在文章中描述的内容。

目前没有PHP函数可以处理此问题。然而,自己动手并不难:

function array_insert(&$array, $insert, $position) {
    $c = count($array);
    $slice = array_merge($insert, array_slice($array, $position));
    array_splice($array, $position, $c, $slice);
}

$array = array('a','b','d','e');
print_r($array);
array_insert($array, array('c'), 2);
print_r($array);
将导致:

Array
(
    [0] => a
    [1] => b
    [2] => d
    [3] => e
)
Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
)
如果位置大于数组、插入不是数组等,您可能可以添加检查。

如果使用array_splice(),PHP仍然需要复制一半数组才能进行插入,这将对较大数组的性能造成影响。也许您应该使用列表或树数据结构


我唯一需要插入到数组中间的时间是在我执行一些基本上类似于插入排序的操作时。也许您想将未排序的项目存储在一个数组中,然后在添加完所有项目后对其进行排序?

谢谢。这就是我问的原因…(从文档中看不太明显)
Array
(
    [0] => a
    [1] => b
    [2] => d
    [3] => e
)
Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
)