从数组中删除第n个元素并重新索引

4
我有一个如下所示的数组。
Array
(
    [0] => '13-Nov'
    [1] => 'PUJA SUNUWAR'
    [2] => '13-Nov'
    [3] => '...301303'
    [4] => 'TT1331600004\DLG'
    [5] => '-10000.00'
    [6] => '0'
    [7] => '90000.00'
)

我需要移除数组的第四项并将其保存为

 Array
    (
        [0] => '13-Nov'
        [1] => 'PUJA SUNUWAR'
        [2] => '13-Nov'
        [3] => 'TT1331600004\DLG'
        [4] => '-10000.00'
        [5] => '0'
        [6] => '90000.00'
    )

我不想遍历数组中的每个元素。有没有像array_pop这样的一次性函数来删除数组的第n个元素?

2
这个 "unset($array[2]);" 有什么问题吗?或者您可以创建一个函数,循环遍历数组并创建一个新的没有不必要值的数组。 - Peon
1
unset单独使用不会重新索引数组。 - shanethehat
3个回答

13

1

这是否是一个二维数组?如果是:

不,没有内置的函数可以做到这一点。您可以使用带有自定义回调的´array_walk´,但我怀疑它比简单的foreach更快。

否则(如果是普通数组):

unset( $aData[3] );

$aData = array_values( $aData );

哪个比array_splice更快。


0

如上所述,没有内置函数可以实现这个功能。 如果您不需要关心数组索引,则应使用unset,如果需要,则应使用array_values

此外,在数组迭代时应使用{{link1:值引用}}以防止在修改值时进行内部数组复制。如果不这样做,它可能是性能下降的原因之一。

foreach ($yourDataSet as &$value) {
    unset($value[2]); 
    //$value = array_values($value);
}

你不应该使用 array_splice,因为有 性能原因
另外,你可以检查 phpbench 进行关于不同类型的数组迭代性能测试。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接