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中有更好的实现吗?
答案 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)) {}