4

我有一个如下所示的数组

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 个元素一样的单次功能?

4

3 回答 3

13

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

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

于 2013-11-13T08:57:15.083 回答
1

这是二维数组吗?如果是这样:

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

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

unset( $aData[3] );

$aData = array_values( $aData );

Wich 比 array_splice 更快。

于 2013-11-13T08:55:37.343 回答
0

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

此外,您应该使用value referencewhile 数组迭代来防止在值修改时内部数组复制。如果不这样做,则可能是性能故障的原因之一。

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

array_splice由于性能原因,您不应该使用。

ps 你也可以检查phpbench以获得关于不同类型数组迭代的性能测试。

于 2013-11-13T09:12:55.347 回答