仅从多维数组中删除空值



>我想只删除空值不空不 0。 我的数组看起来像这样

[hrg_children] => Array
                    (
                        [0] => Array
                            (
                                [col1] => 123
                                [col2] => 1
                                [col3] => 
                                [col4] => 
                                [col5] => 
                                [col6] => 
                                [col7] => 
                                [col8] => 
                                [col9] => 
                                [col10] => 
                                [col11] => 
                                [col12] => 
                                [col13] => 
                                [col14] => 
                                [hrg_lid] => 1464902183
                            )
                    )

我已经尝试过的代码。

array_filter(array_map('array_filter', $gcmArray));

但仍然失败了。

使用带有严格比较 (===) 或 is_null() 函数的 foreach。

foreach($array as $key=>$value)
   if($value === null )
      unset($array[$key]);

如果你只是想深入一层,你可以使用地图和过滤器。

// Map over the first level (you're missing this bit)
$array = array_map(function ($item) {
  // Then filter the values. All values where the callback returns
  // true are returned and kept by our map. Hence the ! is_null
  return array_filter($item, function ($value) {
    return ! is_null($value);
  });
}, $array);

如果你想更深入,你需要递归,以便你可以使用类似于下面的东西。

function recursive_unset(array $array, callable $callback) {
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            $array[$key] = recursive_unset($value, $callback);
        } else {
            if ($callback($value, $key)) {
                unset($array[$key]);
            }
        }
    }
    return $array;
}
var_dump(recursive_unset($gcmArray, function ($value) {
  return is_null($value);
}));

显然您错误地使用了array_filter函数。

请访问 http://php.net/manual/en/function.array-filter.php 以获取文档。

它应该是这样的

    array_filter($yourArrayToFilter, function($value) {
      return (is_null($value))? false : true;
    });

这意味着对于数组的每个元素,如果值为 null,则该函数将返回 false,并且该元素将从数组中删除。

相关内容

  • 没有找到相关文章

最新更新