我有一个数组,它有大约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个键值的数组,并且我不依赖于键以及确定什么时间和地点的值。由于上面将基本上删除所有内容然后只是重建数组。我被困的地方是试图弄清楚如何模仿上述功能,但我保留了我需要的钥匙。
答案 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)
如果您要删除null
,undifined
,''
,0
,'0'
,但不要删除字符串' '
< / p>
$result = array_filter( $array, 'ucfirst' );
答案 4 :(得分:-3)
将+1键与您的键变量一起使用以跳过数组中的空键
foreach($myarray as $key=>$value)
{
echo $key+1; //skip null key
}