检查是否设置了作为参数传递的变量

时间:2010-08-23 11:17:39

标签: php isset

我想检查名为$ smth的变量是否为空(我的意思是空格),我还想检查它是否使用我在下面定义的函数设置:

function is_blank($var){
    $var = trim($var);
    if( $var == '' ){
        return true;
    } else {
        return false;
    }
}

问题是我无法找到检查$smth函数中是否设置了变量is_blank()的方法。以下代码解决了我的问题,但使用了两个函数:

if( !isset($smth) || is_blank($smth) ){
    // code;
}

如果我使用未声明的变量作为函数的参数,它会说:

if( is_blank($smth) ){
    //code;
}

Undefined variable: smth in D:\Www\www\project\code.php on line 41

你有解决方案吗?

解决方案

这就是我提出的:

function is_blank(&$var){ 
    if( !isset($var) ){ 
        return true; 
    } else { 
        if( is_string($var) && trim($var) == '' ){ 
            return true; 
        } else { 
            return false; 
        } 
    } 
}

并且像魅力一样。非常感谢ideaNikiC

3 个答案:

答案 0 :(得分:9)

只需通过引用传递,然后执行isset检查:

function is_blank(&$var){
    return !isset($var) || trim($var) == '';
}

答案 1 :(得分:0)

每当您使用emptyisset之外的变量时,都会检查它是否已设置。因此,使用isset的解决方案是正确的,您无法将检查推迟到is_blank函数。如果您只想检查变量是否为空,请仅使用empty函数。但是,如果您想在trim操作后专门检查空字符串,请使用isset + is_blank函数。

答案 2 :(得分:-1)

使用empty。它检查变量是0,空还是不设置。

if(empty($smth))
{
    //code;
}