空和/或空和/或未设置数组的PHP测试

空和/或空和/或未设置数组的PHP测试,php,codeigniter,logic,Php,Codeigniter,Logic,我想保持简短。我不知道我的术语是否正确,但我从Codeigniter手册第1卷中得到了这个示例 我已经多次遇到这个问题。根据数据类型,不同的测试更合适。有些测试会以意想不到的方式失败 如何确定最合适、可能也是最简洁的测试 为了清楚起见,我正在寻找最有效的方法来测试对象/变量是否准备好使用,而不管数据类型如何,如果可能的话 此外,我不希望解决方案仅适用于示例中的列表。它应该广泛适用。使用empty()bool empty(混合$var) 确定变量是否为空。如果变量不存在或其值等于FALSE,则认

我想保持简短。我不知道我的术语是否正确,但我从Codeigniter手册第1卷中得到了这个示例

我已经多次遇到这个问题。根据数据类型,不同的测试更合适。有些测试会以意想不到的方式失败

如何确定最合适、可能也是最简洁的测试

为了清楚起见,我正在寻找最有效的方法来测试对象/变量是否准备好使用,而不管数据类型如何,如果可能的话

此外,我不希望解决方案仅适用于示例中的列表。它应该广泛适用。

使用empty()
bool empty(混合$var)

确定变量是否为空。如果变量不存在或其值等于FALSE,则认为该变量为空。如果变量不存在,empty()不会生成警告。

只需使用


我已经使用以下函数一段时间了

您可以为所有可能的变量类型添加自己的测试

function is_valid_var($var)
{
  if ( isset( $var ) ) {

    // string
    if ( is_string( $var ) && strlen( $var ) == 0 ) return false;

    // array
    elseif ( is_array( $var ) && count( $var ) == 0 ) return false;

    // unknown
    else return true;
  }

  return false;
}

这不是PHP,在我的示例中,它没有接近于涵盖所有用例。@shakabra是的,它是PHP,我应该包含指向手动页面的链接:@shakabra您的示例也有点不同,它不仅检查$args是否有多个元素,而且还检查$args[0]($args的第一个元素)是否存在也是一个数组很抱歉,这只是一行代码,让我想起了以前的问题。如果变量恰好是字符串,则无法使用此选项?@shakabra:为什么不?可以。empty()也会检查空字符串@shakabra您应该仔细查看链接的手册页面。它准确地说明了这个函数的作用。好吧,我不知道为什么我没有经常使用它。谢谢你的回答。但是如果我使用MySQL,empty()是否可以与数据库资源一起工作。那真是让我头疼。
if(!empty($args)){
  echo 'Array is set, not empty and not null';
}
function is_valid_var($var)
{
  if ( isset( $var ) ) {

    // string
    if ( is_string( $var ) && strlen( $var ) == 0 ) return false;

    // array
    elseif ( is_array( $var ) && count( $var ) == 0 ) return false;

    // unknown
    else return true;
  }

  return false;
}