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

chr*_*ris 9 php arrays

我有一个数组,它有大约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;
    }
Run Code Online (Sandbox Code Playgroud)

我喜欢做的与此非常相似,但这适用于可以具有nn键值的数组,并且我不依赖于键以及确定什么时间和地点的值.由于上面将基本上删除所有内容然后只是重建数组.我被困在哪里试图弄清楚如何模仿上面的功能,但我保留了我需要的钥匙.

Ale*_*s G 20

如果我理解你所追求的是什么,你可以使用array_filter()或者你可以这样做:

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

  • 您可能希望使用“if (empty($value))”来更全面。 (2认同)
  • `empty()` 更全面,因为它还检查 0、false、"0"、0.0、空数组等。它也更易于阅读和维护。 (2认同)

Tom*_*lez 18

如果你想快速删除NULL,FALSE和Empty Strings(""),但保留0(零)的值,你可以使用标准的php函数strlen作为回调函数:

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

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

  • 注意:这不适用于多维数组。 (3认同)

Jon*_*Jon 5

array_filter是一个内置功能,可以完全满足您的需求。最多,您将需要提供自己的回调函数,以决定保留哪些值以及删除哪些值。按键将根据功能描述自动保存。

例如:

// This callback retains values equal to integer 0 or the string "0".
// If you also wanted to remove those, you would not even need a callback
// because that is the default behavior.
function filter_callback($val) {
    $val = trim($val);
    return $val != '';
}

$filtered = array_filter($original, 'filter_callback');
Run Code Online (Sandbox Code Playgroud)