在数据库中进行查询时,我可以接收两个数组:
Array
(
[] => 401
[BETA] => 223
[GAMMA] => 195
[DELTA] => 189
)
Array
(
[ALFA] => 294
[BETA] => 223
[GAMMA] => 195
[DELTA] => 189
)
当密钥为空时,如何排除整行?
我试过这样的事,但没有成功:
foreach($array as $key => $value){
if(array_key_exists($key, $value) && is_null($value[$key])) {
unset($key);
}
$array = $value;
}
非常感谢提前!
答案 0 :(得分:3)
密钥不是null
,它是一个空字符串。例如:
$foo = array(""=>"bar");
print_r($foo);
输出:
Array
(
[] => bar
)
因此,您需要empty($key)
或$key == ''
作为测试,区别在于empty()
can match quite a few things。
答案 1 :(得分:0)
使用empty($var)
功能进行评估。它认为这些值为空,如果提供了一个,则返回true:
null
:空值
''
:空字符串,
0
:数字零。仅当它未通过直接或间接分配(例如$ var = 0或$ var = 1-1)分配时。请注意,零字符串('0'
)不为空,
array()
:一个空数组,
$var;
:未分配的变量,
false
:值为false,
' '
:只是一个空格字符串。
答案 2 :(得分:0)
由于密钥是空字符串,您可以删除该特定密钥:
$test = array(''=>'test', 'test'=>'test');
unset($test['']);
print_r($test);
或删除仅包含空格的所有键:
function array_remove_blank_keys($array) {
foreach ($array as $key => $value) {
if (preg_match('/^\s*$/', $key)) {
unset($array[$key]);
}
}
return $array;
}
$test = array(''=>'test', 'test'=>'test');
print_r($test);
print_r(array_remove_blank_keys($test));
答案 3 :(得分:-2)
密钥永远不会是空的。他们会有一个数字索引。 因此,只需检查键是否为数字然后取消设置。
foreach($array as $key => $value){
if(is_numeric($key)) {
unset($key);
}
}
并且您不需要执行$ array = $ value;