不使用循环检查数组是否为空?

时间:2009-08-26 06:39:59

标签: php arrays isset

PHP中是否有任何函数可用于检查数组是否为空或如何在不使用循环的情况下执行此操作?

例如:$b = array('key1' => '', 'key2' => '', 'key3' => '', 'key4' => '');

如何在不使用循环的情况下检查数组$ b是否包含空值?

7 个答案:

答案 0 :(得分:14)

简单:

function allEmpty($array)
{
    return empty(array_filter($array)); // (PHP < 5.3) or
    $array = array_filter($array); return empty($array); // (PHP >= 5.3) or just
    return array_filter($array) === array();
}

function someEmpty($array)
{
    return ($array !== array_filter($array));
}

答案 1 :(得分:3)

无论你使用循环还是某个数组函数,你仍然在循环遍历数组,所以保持简单,只需遍历数组:

function isEmpty($arr) {
  foreach ($arr as $k => $v) {
    if ($v) {
      return false;
    }
  }
  return true;
}

根据您要定义为空的内容,您可能只想检查空字符串:

function isEmpty($arr) {
  foreach ($arr as $k => $v) {
    if ($v === '') {
      return false;
    }
  }
  return true;
}

答案 2 :(得分:1)

简单地说,不。

如果你不想做一个字面foreach / for / while,你可以使用array_walk

答案 3 :(得分:1)

如果那是您要检查的特定数组(即:它只有key =&gt;值,而且空值总是key =&gt;'')...

$b = array('key1' => '', 'key2' => '', 'key3' => '', 'key4' => '');
$temp = array_flip($b);
if(count($temp) === 1 && empty($temp[0])){
    echo 'empty';
}

否则你将不得不使用循环...抱歉。

答案 4 :(得分:0)

如果您想检查空字符串'',可以使用in_array

if(!in_array('', $array)) echo 'array doesn’t contain empty strings';
if(in_array('', $array)) echo 'array does contain at least one empty string';

您可能还想尝试使用空回调方法array_filter,并将其与空数组进行比较(或使用empty()):

if(empty(array_filter($array))) echo 'array only contains values evaluating to false';

答案 5 :(得分:0)

我通常使用以下条件进行检查:

if(is_array($array) and count($array)) {
 //  ... code here ...
}

就是这样。

答案 6 :(得分:0)

一个简单的

if(!array_filter($array)){
  //Is empty
}
else
{
  //Is not empty
}

做好工作。