1

php 5.3 中的 empty() 函数不适用于关联数组。我有一个关联数组,它可能有大约 30 多个元素。

$arr = array(
             'one'=>kwara, 
             'two'=>osun,
             ...
             'thirty'=>lagos
            )

如果关联数组为空,如下所示:

$arr = array(
             'one'=>'', 
             'two'=>'',
             ...
             'thirty'=>''
            )

我需要检查数组是否为空,以下在 php 5.3 中不起作用。

if(empty($arr))
{
  echo "array is empty<br />>";
}
else
{
  echo "array is NOT empty<br />";
}

并将返回“数组不为空”。我知道php 5.4中的行为有所不同,但我当前的平台是 php 5.3。

为了克服这个问题,我使用了以下方法:

if(strlen(implode('',array_values($arr))) > 0)       
{

 echo "array is NOT empty<br />>";
}
else
{
  echo "array is empty<br />";
}

问题是:在 php 5.3 中实现这一点有更好的方法吗?

4

3 回答 3

2

你有没有尝试过:

if (sizeof(array_filter($array)) === 0) // do your stuff

你原来的也可以改进如下:

if (implode($array) !== '') // do your stuff
于 2012-11-12T09:23:22.773 回答
2

简短的回答:没有

更长的答案:您正在查看的数组根本不是空的,它包含一堆长度为零的字符串的键。您的解决方案可能是最短可读的解决方案之一。不过,您可能希望将其包装在您自己的函数中。

于 2012-11-12T09:24:08.353 回答
0

Empty 仅适用于真正的空值,您的数组已分配键,因此它不为空。您的解决方案可能是做您想做的事情的最佳方式 - 很难说,您需要进行一些基准测试,它可以通过许多其他方式完成:

if (array_filter($arr) === array()) {}
// or
if (!implode('', $arr)) {}
于 2012-11-12T09:28:22.010 回答