PHP 删除空的空数组键/值,同时保留键/值,否则不为空/空

新手上路,请多包涵

我有一个数组,它有大约 12 个潜在的键/值对。那是基于 _POST/_GET

这些键不是 0-n 中的数字,我需要在适用的情况下保留具有这些值的键。我的问题是我知道有时会传递值为 null、空或等于 “ 的键。如果是这种情况,我想在处理我的数组之前删除那些键。由于没有任何东西会破坏我的脚本。

不久前,我创建或发现了这个功能(我不记得它在我的武器库中有一段时间了,不管怎样)。

 function remove_array_empty_values($array, $remove_null_number = true)
    {
        $new_array = array();
        $null_exceptions = array();
        foreach($array as $key => $value)
        {
            $value = trim($value);
            if($remove_null_number)
            {
                $null_exceptions[] = '0';
            }
            if(!in_array($value, $null_exceptions) && $value != "")
            {
                $new_array[] = $value;
            }
        }
        return $new_array;
    }

我想做的事情与此非常相似,但是这适用于可以具有 nn 键值的数组,并且我不依赖于键和值来确定什么是什么,何时何地。如上所示,基本上只会删除所有内容,然后重建数组。我被卡住的地方是试图弄清楚如何模仿上述功能,但我保留了我需要的键。

原文由 chris 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 320
2 个回答

如果我理解正确你在做什么,你可以使用 array_filter() 或者你可以这样做:

 foreach($myarray as $key=>$value)
{
    if(is_null($value) || $value == '')
        unset($myarray[$key]);
}

原文由 Aleks G 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您想快速删除 NULL、FALSE 和空字符串 (“”),但保留 0(零)值,则可以使用标准 php 函数 strlen 作为回调函数:

 // removes all NULL, FALSE and Empty Strings but leaves 0 (zero) values
$result = array_filter( $array, 'strlen' );

资料来源:http: //php.net/manual/en/function.array-filter.php#111091

原文由 Tomas Gonzalez 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏