检查数组是否为空

时间:2020-04-09 09:51:44

标签: php arrays

我得到了以下数组:

array(1) {
  [0]=>
  array(2) {
    ["name"]=>
    string(0) ""
    ["fistname"]=>
    NULL
  }
}

如果不为空,我想对其进行处理。我尝试过:

if (!empty($data->User)) {
   echo 'filled';
} else {
   echo 'empty';
}

但这会返回

已填充

在Marcin Orlowski回答后编辑

$user = $data->User();
var_dump($user);
if (!empty($user)) {
   echo 'filled';
} else {
   echo 'empty';
}

显示:

array(1) {
  [0]=>
  array(2) {
    ["name"]=>
    string(0) ""
    ["fistname"]=>
    NULL
  }
}

2 个答案:

答案 0 :(得分:1)

据我了解,在您的代码中,对象$ data的功能User()返回了您提到的数组。如果是这种情况,那么$ data-> User()(即您的数组)肯定是非空的,因为它有一个条目即数组

array(2) {
    ["name"]=>
    string(0) ""
    ["fistname"]=>
    NULL
  }

如果要检查'name'和'firstname'属性是否为空,则需要这样的一段代码,

if (!empty($data->User[0]['name']) or !empty($data->User[0]['firstname'])) {
   echo 'filled';
} else {
   echo 'empty';
}

甚至更好地在您的类中进行检查,即在类中为$ data编写类似的代码

public function isEmptyUser() {
    return (empty($this->name) && empty($this->firstname));
}

答案 1 :(得分:0)

您的问题很清楚,因此我假设您的User()返回显示的数组。如果是这样,您会错过docs

确定变量是否被认为是空的。如果变量不存在或其值等于FALSE,则认为该变量为空

以下值被认为是空的:

...

array()(一个空数组)

在您的情况下都不是,因此所有功能都可以正常使用。出于调试目的,您还可以var_dump()来查看返回的数据:

$user = $data->User();
var_dump($user);
if (!empty($user) {
   echo 'filled';
} else {
   echo 'empty';
}
相关问题