从数组数组中删除键值的有效方法



我的数组为50000数组,我想从每个数组中删除" ID"键值对。

我宁愿不循环浏览50k元素,并且想知道是否有一种有效的方法。

Array
(
    [0] => Array
        (
            [id] => 713061
            [market] => usd-btc
            [price] => 3893.69
        )
    [1] => Array
        (
            [id] => 713056
            [market] => usd-btc
            [price] => 3893.69
        )
    [2] => Array
        (
            [id] => 713051
            [market] => usd-btc
            [price] => 3893.69
        )
    [3] => Array
        (
            [id] => 713046
            [market] => usd-btc
            [price] => 3893.69
        )
    [4] => Array
        (
            [id] => 713041
            [market] => usd-btc
            [price] => 3892.95
        )
    [5] => Array
        (
            [id] => 713036
            [market] => usd-btc
            [price] => 3892.95
        )

我尝试了以下两者,但似乎不起作用:

// Remove ID
        foreach($server_data as $sd)
        {
            unset($sd['id']);
        }
        unset($server_data['id']);
        PRINT_R($server_data);

$ server_data仍在使用$ id元素返回数组;

有什么想法?

这会创建子阵列的副本,因此,当您更改它时,主数组不会受到影响:

foreach ($server_data as $sd)
{
    unset($sd['id']);
}

您可以从原始数组中解开:

foreach (array_keys($server_data) as $index)
{
    unset($server_data[$index]['id']);
}

或通过子阵列参考,以便更改原件:

foreach ($server_data as &$sd)
{
    unset($sd['id']);
}

或更简洁:

array_walk($server_data, function (&$item) { unset($item['id']); });

没有理由我能想到将其删除(只要忽略它),但是您可以通过删除id的回调运行并返回其余部分:

$server_data = array_map(function($v) { unset($v['id']); return $v; }, $server_data);

相关内容

  • 没有找到相关文章

最新更新