我的数组为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);