我有一个50000个数组,我想从每个数组中删除“ id”键值对。
我宁愿不遍历5万个元素,并且想知道是否存在一种有效的方法。
.sample
我尝试了以下两种方法,但似乎没有用:
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
)
$ server_data仍返回带有$ id元素的数组;
有什么想法吗?
答案 0 :(得分:3)
这将创建子数组的副本,因此当您对其进行更改时,主数组不会受到影响:
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']); });
答案 1 :(得分:1)
我没有理由删除它(只是忽略它),但是您可以通过删除id
并返回其余内容的回调运行它:
$server_data = array_map(function($v) { unset($v['id']); return $v; }, $server_data);