Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP如何从多维数组中删除密钥?_Php_Arrays_Multidimensional Array - Fatal编程技术网

PHP如何从多维数组中删除密钥?

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 (

我想从PHP数组中删除键1。我知道如何通过使用foreach循环实现这一点,但我想要
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
    )
);