【问题标题】:Remove items from multidimensional array in PHP从 PHP 中的多维数组中删除项目
【发布时间】:2017-01-01 12:00:53
【问题描述】:

我需要删除多维数组中的空项。 有没有一种简单的方法可以轻松删除空项目? 我只需要保留 2010-06 和 2010-07。

非常感谢!

Array
(
    [2010-01] => Array
        (
            [2010-03] => Array
                (
                    [0] => 
                )
            [2010-04] => Array
                (
                    [0] => 
                )
            [2010-06] => Array
                (
                    [0] => stdClass Object
                        (
                            [data_test] => value
                            [date] => 2010-05-01 12:00:00
                        )

                )
            [2010-07] => Array
                (
                    [0] => stdClass Object
                        (
                            [data_test] => value
                            [date] => 2010-05-01 12:00:00
                        )

                )
        )
)

【问题讨论】:

标签: php arrays multidimensional-array


【解决方案1】:

试试这个功能。这将解决您的问题。

 function cleanArray($array)
{
    if (is_array($array))
    {
        foreach ($array as $key => $sub_array)
        {
            $result = cleanArray($sub_array);
            if ($result === false)
            {
                unset($array[$key]);
            }
            else
            {
                $array[$key] = $result;
            }
        }
    }

    if (empty($array))
    {
        return false;
    }

    return $array;
}

【讨论】:

    【解决方案2】:

    array_filter 不会处理这个数组 所以试试这个自定义函数

    <?php
    $array =array(
        20 => array(
            20 => array(
                0=> ''
            ),
            10 => array(
                0=> 'hey'
            )       
    
        )
    );
    function array_remove_empty($arr){
        $narr = array();
        while(list($key, $val) = each($arr)){
            if (is_array($val)){
                $val = array_remove_empty($val);
                // does the result array contain anything?
                if (count($val)!=0){
                    // yes :-)
                    $narr[$key] = $val;
                }
            }
            else {
                if (trim($val) != ""){
                    $narr[$key] = $val;
                }
            }
        }
        unset($arr);
        return $narr;
    }
    
    print_r(array_remove_empty($array));
    ?> 
    

    找到这个答案here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-24
      • 1970-01-01
      • 2017-05-11
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      相关资源
      最近更新 更多