如何从多维数组中删除空数组?

时间:2016-12-28 14:47:39

标签: php arrays array-filter

这是多维数组,我想删除其中的空数组。

$exclude1=array(

array(

    [0] => Last Updated: Thu Apr 21 17:03:23 2016 PST

)
Array

(

    [0] => 

)

Array

(

[0]=>

)

Array

(

    [0] => MODEL: MODEL_NC

)

)

我想删除空数组。我试过这个:

$exclude1=array_filter(array_map('array_filter', $exclude1));

但它不起作用。

4 个答案:

答案 0 :(得分:1)

您当前的数组值如下:

$exclude1 = array(
    array("Last Updated: Thu Apr 21 17:03:23 2016 PST"),
    array(""),
    array(""),
    array("MODEL: MODEL_NC"),
);

查看当前数组的输出。它看起来像下面的那样:

echo "<pre>";
print_r($exclude1);

输出将是:

Array
(
    [0] => Array
        (
            [0] => Last Updated: Thu Apr 21 17:03:23 2016 PST
        )

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

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

    [3] => Array
        (
            [0] => MODEL: MODEL_NC
        )

)

使用array_filter和array_map

$newArray = array_filter(array_map('array_filter', $exclude1));

检查最终输出:

Array
(
    [0] => Array
        (
            [0] => Last Updated: Thu Apr 21 17:03:23 2016 PST
        )

    [3] => Array
        (
            [0] => MODEL: MODEL_NC
)

因此它将从之前的多维数组中删除空数组。

第二路

function array_remove_null($array) {
    foreach ($array as $key => $value)
    {
        if(is_null($value))
            unset($array[$key]);
        if(is_array($value))
            $array[$key] = array_remove_null($value);
    }
    return $array;
}

第三种方式:

$arr = array_filter_recursive($arr);
$arr = array_filter($arr);

参考:http://php.net/manual/en/function.array-filter.php

答案 1 :(得分:1)

在您的代码中,您错误地使用了array_filter,您可以检查其menual

  

array array_filter(array $ array [,callable $ callback [,int $ flag =   0]])

所以你可以这样使用。

<?php
$exclude1=array(
    ['Last Updated: Thu Apr 21 17:03:23 2016 PST'],
    [null],
    [null],
    ['MODEL: MODEL_NC']
);
unset($exclude1[1][0]);  //this make the array empty as you question.
unset($exclude1[2][0]);
var_dump($exclude1);
$exclude1=array_filter( $exclude1, function($v){return count($v) == 0 ? false : true;});
var_dump($exclude1);

和输出:

ei@localhost:~$ php test.php
array(4) {
  [0]=>
  array(1) {
    [0]=>
    string(42) "Last Updated: Thu Apr 21 17:03:23 2016 PST"
  }
  [1]=>
  array(0) {
  }
  [2]=>
  array(0) {
  }
  [3]=>
  array(1) {
    [0]=>
    string(15) "MODEL: MODEL_NC"
  }
}
array(2) {
  [0]=>
  array(1) {
    [0]=>
    string(42) "Last Updated: Thu Apr 21 17:03:23 2016 PST"
  }
  [3]=>
  array(1) {
    [0]=>
    string(15) "MODEL: MODEL_NC"
  }
}

答案 2 :(得分:0)

像这样使用array_filter

$exclude1=array_filter( $exclude1, function($v){return count($v) == 0 ? false : true;});

答案 3 :(得分:0)

要从数组中删除空数组,您应该可以这样做:

$newArray = array_filter($exclude1);

希望这有帮助!