有没有更好的方法来确定PHP 5.3中的空关联数组?

时间:2012-11-12 09:20:56

标签: php

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 />";
}

并将返回'array is not empty'。我知道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中有更好的实现吗?

3 个答案:

答案 0 :(得分:2)

你试过了吗?

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

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

if (implode($array) !== '') // do your stuff

答案 1 :(得分:2)

简答:否

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

答案 2 :(得分:0)

Empty只能使用非常空的值,您的数组已分配键,因此它不为空。你的解决方案可能是做你想做的最好的方法 - 很难说,你需要做一些基准测试,它可以通过许多其他方式完成:

if (array_filter($arr) === array()) {}
// or
if (!implode('', $arr)) {}