[英]How to remove an array from a Multidimensional array by key if condition is met Php
[英]PHP how to remove key from multidimensional array?
我想从 PHP 数组中删除键 1。 我知道如何通过使用 foreach 循环来实现这一点,但我想要array_filter
解决方案。 任何人都知道如何通过使用数组过滤器方法来实现这一点?
PHP数组:
Array (
[0] => Array
(
[0] => 5000
[1] => 25
[2] => 44
)
[1] => Array
(
[0] => 5000
[1] => 25
[2] => 48
)
[2] => Array
(
[0] => 5000
[1] => 26
[2] => 44
)
[3] => Array
(
[0] => 5000
[1] => 26
[2] => 48
)
)
预期结果:
Array
(
[0] => Array
(
[0] => 5000
[1] => 44
)
[1] => Array
(
[0] => 5000
[1] => 48
)
[2] => Array
(
[0] => 5000
[1] => 44
)
[3] => Array
(
[0] => 5000
[1] => 48
)
)
您不能为此目的使用array_filter()
。 改用array_reduce()
$newArr = array_reduce($array, function($carry, $item){
$carry[] = [$item[0], $item[2]];
return $carry;
});
在演示中检查结果
您不能为此使用array_filter
。 array_filter
处理值,但您想删除特定键。
使用array_splice()
删除索引并调整所有后续增量。
foreach ($array as &$element) {
array_splice($element, 1, 1);
}
&
使其成为引用变量,因此修改变量会影响数组中的元素。
如果处理索引数组数组,@Barmar 的迭代array_splice()
调用是理想的,因为它们在删除目标键后重新索引子数组。 这是他的答案的功能和动态变化。
(两个演示)
$array = [
[5000, 25, 44],
[5000, 25, 48],
[5000, 26, 44],
[5000, 26, 48],
];
$omitKey = 1;
var_export(
array_map(
function($row) use($omitKey) {
array_splice($row, $omitKey, 1);
return $row;
},
$array
)
);
如果您有一组关联数组(未索引),则array_splice()
不是正确的工具,因为它依赖于位置,而不是键。 请改用unset()
。
$array = [
['a' => 5000, 'b' => 25, 'c' => 44],
['a' => 5000, 'b' => 25, 'c' => 48],
['a' => 5000, 'b' => 26, 'c' => 44],
['a' => 5000, 'b' => 26, 'c' => 48],
];
$omitKey = 'b';
var_export(
array_map(
function($row) use($omitKey) {
unset($row[$omitKey]);
return $row;
},
$array
)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.