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

时间:2013-11-13 08:51:20

标签: php arrays

我有一个如下所示的数组

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

我需要删除第4项数组并将其另存为

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

我不想迭代数组的每个元素。是否有像array_pop这样的一个镜头函数来删除数组的第n个元素?

3 个答案:

答案 0 :(得分:12)

使用array_splice($array, 3, 1);

http://php.net/manual/en/function.array-splice.php

答案 1 :(得分:1)

这是一个二维阵列吗?如果是这样的话:

不,没有内置功能来执行此操作。您可以将'array_walk'与自定义回调一起使用,但我怀疑它会比简单的foreach更快。

否则(如果正常数组):

unset( $aData[3] );

$aData = array_values( $aData );

比array_splice快。

答案 2 :(得分:0)

如上所述,没有功能构建。 如果您不需要关心数组索引,则应使用unset,如果需要,则应使用array_values

此外,您应该在数组迭代时使用value reference以防止在修改值时进行内部数组copyng。如果不这样做,那可能是性能崩溃的原因之一。

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

您应该array_splice使用{{1}}。

P.S。您还可以检查perfomance reasons有关不同类型的数组迭代的性能测试。