如何检查数组中的所有键在PHP中是否具有空值?

问题描述

| 我有一个数组
$array = array(\'key1\' => null,\'key2\' => null,\'key3\' => null,\'key4\' => null);
我想确定是否所有数组键都为空值,如果是,则返回false。上面的示例应返回false,因为它没有任何值。但如果一个或多个键具有任何值,则它应返回true,例如,以下示例为true。
$array = array(\'key1\',\'key2\' => value2,\'key3\',\'key4\' => value4);
    

解决方法

        假设您实际上是指一个像
array(\'key1\' => null,\'key2\' => null,\'key3\' => null,\'key4\' => null)
答案很简单
if (!array_filter($array)) {
    // all values are empty (where \"empty\" means == false)
}
    ,        您的假设是不正确的。
array(\'key1\',\'key2\',\'key3\',\'key4\')
有4个值,而键在
0..3
范围内。
array(\'key1\',\'key2\' => value2,\'key4\' => value4)
的值是
key1
(用键0),键
key2
,值
key3
(用键1)和键
key4
。     ,        @Blagovest关于您的错误陈述形式是正确的。
$allEmpty = true;
foreach( $array as $key => $val ) {
    if( isset( $array[$key] ) ) {
        $allEmpty = false;
        break;
    }
}

// Do what you will with $allEmpty
    ,        我认为您的意思是检查所有键都是数字键还是至少一个键是字符串:
$ok = false;
foreach( array_keys($array) as $key ){
    if(is_string($key)){
        $ok=true;
        break;
    }
}

return $ok;
    ,        
$flag = 0;
foreach($array as $keys)
{
        if(!isempty($keys)) {
        $flag++;
        }
}

if(flag > 0)
{
    echo \"Array not empty!\";
}
else {
    echo \"Array empty!\";
}
应该管用。     ,        
$array = array(\'key1\' => null,\'key4\' => null);
答案是
$filterArray = array_filter($array);

if(count($filterArray) == 0){
    return false;
}else{
    return true;
}
    ,        简单
count(array_filter($array)) != count($array)
如果是多维的
count(array_filter(array_values($array))) != count(array_values($array))