插件窝 干货文章 php 二维数组删除

php 二维数组删除

array 删除 元素 二维 287    来源:    2025-03-19

在 PHP 中,删除二维数组中的元素可以通过多种方式实现。以下是几种常见的方法:

1. 使用 unset() 函数

unset() 函数可以删除数组中指定的元素。对于二维数组,你需要指定要删除的元素的行和列。

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

// 删除第二行第三列的元素(即数字6)
unset($array[1][2]);

print_r($array);

输出结果:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 4
            [1] => 5
        )

    [2] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 9
        )
)

2. 使用 array_splice() 函数

array_splice() 函数可以删除数组中的一部分元素,并可以用新元素替换它们。对于二维数组,你可以使用它来删除整行或整列。

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

// 删除第二行
array_splice($array, 1, 1);

print_r($array);

输出结果:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 9
        )
)

3. 使用 array_filter() 函数

array_filter() 函数可以过滤数组中的元素。你可以使用它来删除二维数组中满足特定条件的元素。

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

// 删除所有包含数字5的行
$array = array_filter($array, function($row) {
    return !in_array(5, $row);
});

print_r($array);

输出结果:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [2] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 9
        )
)

4. 使用 array_map()array_filter() 结合

如果你想删除二维数组中每行的特定元素,可以使用 array_map()array_filter() 结合。

$array = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

// 删除每行中的数字5
$array = array_map(function($row) {
    return array_filter($row, function($value) {
        return $value != 5;
    });
}, $array);

print_r($array);

输出结果:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 4
            [1] => 6
        )

    [2] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 9
        )
)

总结

  • unset() 适用于删除特定位置的元素。
  • array_splice() 适用于删除整行或整列。
  • array_filter() 适用于根据条件删除元素。
  • array_map()array_filter() 结合适用于删除每行中的特定元素。

根据你的具体需求选择合适的方法。