PHP数组 - 删除空值

chr*_*mas 10 php arrays

如何遍历此数组并删除任何空值:

[28] => Array
    (
        [Ivory] => 
        [White] => 
    )

[29] => Array
    (
        [Ivory] => 
        [White] => 
    )

[30] => Array
    (
        [Ivory] => 
        [White] => 36
    )

[31] => Array
    (
        [White] => 24
    )
Run Code Online (Sandbox Code Playgroud)

所以说它会删除28,29和30只象牙白...

谢谢!

mfo*_*nda 38

我看到你已经有了一个可行的解决方案,但只是为了好玩,有了array_map的优点:

$array = array_filter(array_map('array_filter', $array));
Run Code Online (Sandbox Code Playgroud)

  • 确实是黑魔法!我应该指出,这只适用于嵌套数组.reg数组只需要array_filter()而不需要回调. (7认同)
  • 这是因为"如果没有提供回调(对于array_filter),则将删除"等于FALSE的所有数组条目"(来自手册).另外,@ Matt说的是什么. (2认同)

Rya*_*yan 4

我相信这会满足您的需求:

foreach( $array as $key => $value ) {
    if( is_array( $value ) ) {
        foreach( $value as $key2 => $value2 ) {
            if( empty( $value2 ) ) 
                unset( $array[ $key ][ $key2 ] );
        }
    }
    if( empty( $array[ $key ] ) )
        unset( $array[ $key ] );
}
Run Code Online (Sandbox Code Playgroud)

它将循环遍历外部数组,深入到它包含的任何数组,并删除值为空的键。然后,一旦完成,它将从外部数组中删除所有子值都为空的键。

请注意,它不适用于通用数组,仅适用于您提供的数组(二维)。