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

时间:2012-03-05 14:11:14

标签: 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;
    }

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

5 个答案:

答案 0 :(得分:18)

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

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

答案 1 :(得分:13)

如果你想快速删除NULL,FALSE和Empty Strings(“”),但保留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

答案 2 :(得分: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');

答案 3 :(得分:0)

如果您要删除nullundifined''0'0',但不要删除字符串' ' < / p>


$result = array_filter( $array, 'ucfirst' );

答案 4 :(得分:-3)

将+1键与您的键变量一起使用以跳过数组中的空键

foreach($myarray as $key=>$value)
{
    echo $key+1; //skip null key
}