在php中检查数组是否为空

时间:2014-08-02 23:21:05

标签: php arrays

毫无疑问,这里已经讨论了几百万次,是的,我再次发布与之相关的内容。

我有以下代码。

$address = "#&#&#&";
$addr = explode("#&",$address);

它返回

Array
(
    [0] => 
    [1] => 
    [2] => 
    [3] => 
)

现在价值是空的。所以我正在检查。

If(!empty($addr))
{
echo 'If print then something wrong';
}

它仍然打印出那条线。没有沮丧但很快就会

5 个答案:

答案 0 :(得分:7)

运行array_filter()删除空条目,然后检查数组本身是否为空()

if (empty(array_filter($addr)))

请注意,没有回调的array_filter()将删除任何" falsey"条目,包括0

答案 1 :(得分:2)

要检查数组是否不包含值,可以循环数组并取消设置no值,然后检查数组是否为空,如下所示。

$addresses = "#&#&#&";
$addresses = explode("#&", $addresses);

foreach ( $addresses as $key => $val ) {
   if ( empty($val) ) {
      unset($addresses[$key]);
   }
}

if ( empty($addresses) ) {
   echo 'there are no addresses';
}
else {
   // do something
}

答案 2 :(得分:1)

这不是一个空数组,空数组没有元素,你有四个元素,每个元素都是一个空字符串,这就是empty返回false的原因。

你必须迭代元素并测试它们是否都是空的,比如

$empty=True;
foreach ($addr as $el){ 
 if ($el){
  $empty=False;
  break;
 }
}

if (!$empty) echo "Has values"; else echo "Empty";

答案 3 :(得分:1)

您正在检查数组中是否包含元素。你想要做的是检查数组中的元素是否为空字符串。

foreach ($addr as $item) {
    if (empty($item)) {
        echo 'Empty string.';
    } else {
        echo 'Value is: '.item;
    }
}

答案 4 :(得分:0)

数组不为空,它有4个项目。这是一个可能的解决方案:

$hasValues = false;

foreach($addr as $v){
    if($v){
        $hasValues = true;
        break;
    }
}

if(!$hasValues){
    echo 'no values';
}