问题描述
|
我有一个数组
$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))