提问人:Johan 提问时间:3/27/2020 最后编辑:mickmackusaJohan 更新时间:2/9/2022 访问量:583
从多维数组中的子数组中删除不需要的元素
Remove unwanted elements from subarrays in multidimensional array
问:
我有一个多维数组,如下所示:
[
[
'id' => 1,
'name' => 'John',
'address' => 'Some address 1'
'city' => 'NY'
],
[
'id' => 2,
'name' => 'Jack',
'address' => 'Some address 2'
'city' => 'NY'
]
...
[ ... ]
]
如何删除所有子数组中的元素,只保留 id 和 name 键及其值?
答:
4赞
nkkollaw
3/27/2020
#1
这行得通吗?
$result = array_map(function($arr) {
return [
'id' => $arr['id'],
'name' => $arr['name']
];
}, $orig_array);
-1赞
nice_dev
3/27/2020
#2
如果要就地编辑相同的数组,只需遍历它们和它们即可。unset
<?php
$preserve_keys = ['id','name'];
foreach($arr as &$data){
foreach($data as $key => $value){
if(!in_array($key,$preserve_keys)){
unset($data[$key]);
}
}
}
如果希望将其作为单独的结果,请循环访问并将其添加到新数组中。
<?php
$new_result = [];
foreach($arr as $data){
$new_result[] = [
'id' => $data['id'],
'name' => $data['name']
];
}
print_r($new_result);
0赞
mickmackusa
2/7/2022
#3
您希望保留前两个关联元素,以便可以在 中进行调用。(演示array_slice()
array_map()
)
var_export(
array_map(fn($row) => array_slice($row, 0, 2), $array)
);
或针对建立白名单数组进行映射调用。(演示array_intersect_key()
)
$keep = ['id' => '', 'name' => ''];
var_export(
array_map(
fn($row) => array_intersect_key($row, $keep),
$array
)
)
或者,您可以在经典中使用数组解构并进行迭代调用。(演示foreach()
compact()
)
$result = [];
foreach ($array as ['id' => $id, 'name' => $name]) {
$result[] = compact(['id', 'name']);
}
var_export($result);
评论
foreach