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


Removing nth element from an array and reindex it

我有一个如下所示的数组

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 个元素?

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

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

这是一个二维数组吗?㞖:

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

否则(如果正常数组):

unset( $aData[3] );
$aData = array_values( $aData );

威奇比array_splice更快。

如上所述,没有内置函数。如果您不需要关心数组索引,则应使用 unset,如果应该关心,则应使用array_values

此外,您应该在数组迭代时使用value reference,以防止在修改值时复制内部数组。如果没有,这可能是性能分解的原因之一。

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

你应该使用array_splice作为性能的原因。

附言你也可以检查phpbench对不同类型的数组迭代的性能测试。