从数组数组中删除键值的有效方法
Efficient way to remove key-value from Array of Arrays
我有一个包含 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 元素的数组;
有什么想法吗?
我没有理由想删除它(只是忽略它),但是您可以 运行 通过删除 id
和 returns 其余部分的回调:
$server_data = array_map(function($v) { unset($v['id']); return $v; }, $server_data);
这会创建子数组的副本,因此当您更改它时,主数组不会受到影响:
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']); });
我有一个包含 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 元素的数组;
有什么想法吗?
我没有理由想删除它(只是忽略它),但是您可以 运行 通过删除 id
和 returns 其余部分的回调:
$server_data = array_map(function($v) { unset($v['id']); return $v; }, $server_data);
这会创建子数组的副本,因此当您更改它时,主数组不会受到影响:
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']); });