首页 > 解决方案 > 如何在php中删除多维数组

问题描述

我有一些数组

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

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

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

)

我需要从数组中删除“0”值,所以结果应该是。

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

如何使用动态代码将其删除?因为它会执行大量的数组。我在里面呆了好几天

标签: phparraysmultidimensional-array

解决方案


这个filterArray功能应该可以工作。

它只是检查您提交的主数组中的数组(在本例中为 $array["data"]),然后检查每个子数组中的第三个位置,如果值不为零则返回它。

$array = array(
    "data" => array(
        array(
            "0" => 1,
            "1" => "MOUSE",
            "2" => 0,
            "3" => 1
        ),
        array(
            "0" => 2,
            "1" => "LAPTOP",
            "2" => 0,
            "3" => 0
        ),
        array(
            "0" => 4,
            "1" => "PHONE",
            "2" => 0,
            "3" => 0
        )
    )
);

function filterArray($elem) {
    if (is_array($elem)) {
        return (bool) $elem[3];
    }
    return false;
}
    
$array["data"] = array_filter($array["data"], "filterArray");

var_dump($array);

这里是您的数组的输出:

array(1) {
    ["data"] => array(1) {
        [0] => array(4) {
            [0] => int(1)
            [1] => string(5) "MOUSE"
            [2] => int(0)
            [3] => int(1)
        }
    }
}

推荐阅读