PHP检查变量中的数组索引是否具有值| isset()总是返回true

时间:2018-04-17 12:26:02

标签: php arrays

我有一个名为$vars的变量,其中包含一个以表格提交的数组:

Array
(
    [name] => Sample Name
    [email] => test@test.com
    [job_role] => 
    [telephone_number] => telephone number
    [comment] => comment
)

如何检查job_role索引是否包含值?

我试过了:

if (in_array('', $vars)){
  echo "Job role can't be empty";
} else {
  echo "Job role submitted";
}

但这适用于整个数组而不仅仅是job_role索引。

另外,我试过了:

if (isset($vars['job_role'])){
  echo "match found";
} else {
  echo "nothing there";
}

但即使我没有提交任何内容,它也会返回“匹配发现”......

为什么isset()总是返回true?

1 个答案:

答案 0 :(得分:3)

您可以使用empty()检查条目是否为空:

if (empty($vars['job_role'])) {
    echo "Job role can't be empty";
} else {
    echo "Job role submitted";
}

因为isset()检查定义的值(设置)是否为空。在你的代码$vars['job_role']中可能是一个空字符串,因此,它是已定义的,但它是空的。