PHP如何从多维数组中删除密钥?
我想从PHP数组中删除键1。我知道如何通过使用foreach循环实现这一点,但我想要PHP如何从多维数组中删除密钥?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我想从PHP数组中删除键1。我知道如何通过使用foreach循环实现这一点,但我想要array\u filter解决方案。有人知道如何通过使用数组过滤器方法来实现这一点吗 PHP数组: Array ( [0] => Array ( [0] => 5000 [1] => 25 [2] => 44 ) [1] => Array (
array\u 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\u filter()
。改用
在中检查结果您不能对此使用
数组过滤器
array\u filter
处理值,但要删除特定键
使用array\u splice()
删除索引并调整以下所有增量
foreach ($array as &$element) {
array_splice($element, 1, 1);
}
&
将其作为参考变量,因此修改变量会影响数组中的元素。如果处理索引数组数组,则@Barmar的迭代数组拼接()
调用是理想的,因为它们在删除目标键后重新索引子数组。这是一个功能和动态的变化对他的答案
()
如果有一个关联数组(未索引),则array\u 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
)
);
需要明确的是,
array\u filter()
可以设置为评估键(尽管不是默认行为)。无论如何,array\u splice()
是重新索引子阵列的更好选择。它可以访问密钥,但由于它在结果中保留了密钥,因此不会对其余元素重新编号。您必须使用$element=array\u值($element)代码>以修复索引。
$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 = [
['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
)
);