删除空值的空数组

时间:2013-12-12 18:08:36

标签: php arrays multidimensional-array array-filter

正确的观点。我有一个提交多维数组值的表单。通常它会得到这样的东西。

[0] => Array
    (
        [socialClass] => Myclass
        [socialLink] => http://...
        [socialName] => Name
    )

[1] => Array
    (
        [socialClass] => 
        [socialLink] => MyClass
        [socialName] => Name
    )

[2] => Array
    (
        [socialClass] => 
        [socialLink] => 
        [socialName] => 
    )

想法从树中删除不完整的数组,例如[1][2],所以我会在过滤器后返回这样的内容。

[0] => Array
    (
        [socialClass] => Class
        [socialLink] => http://...
        [socialName] => Name
    )

array_filter在这种情况下不起作用,也可以在其他“递归”定制函数中起作用。我该怎么办?

3 个答案:

答案 0 :(得分:3)

以下array_filter调用自定义过滤器功能应该可以帮到您:

$arr = array_filter($arr, function($sub_arr) {
    foreach ($sub_arr as $item)
        if ($item === "")
            return false;
    return true;
});

您将注意到,如果该项的任何子数组值为空字符串,则该项将被删除。

答案 1 :(得分:3)

对于PHP> = 5.3

$myarray = array_filter($myarray, function ($node) {
    return count(array_filter($node)) == count($node);
});

答案 2 :(得分:0)

在这种情况下,数组滤镜会很棒:

$result = array_filter($input, function($a){
    return isset($a['socialClass']) 
           && isset($a['socialLink']) 
           && isset($a['socialName'])
           && !empty($a['socialClass']) 
           && !empty($a['socialLink']) 
           && !empty($a['socialName']);
});

这应该有效!