Проверьте, установлена ​​ли переменная, переданная в качестве аргумента - PullRequest
2 голосов
/ 23 августа 2010

Я хочу проверить, является ли переменная с именем $ 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; 
        } 
    } 
}

и работает как шарм. Большое спасибо за идею , NikiC .

Ответы [ 3 ]

9 голосов
/ 23 августа 2010

Просто перейдите по ссылке, а затем выполните проверку isset:

function is_blank(&$var){
    return !isset($var) || trim($var) == '';
}
0 голосов
/ 23 августа 2010

Всякий раз, когда вы используете переменную вне empty и isset, будет проверено, была ли она установлена ​​ранее.Таким образом, ваше решение с isset правильное, и вы не можете отложить проверку до функции is_blank.Если вы хотите только проверить, является ли переменная пустой, используйте вместо нее только функцию empty.Но если вы хотите специально проверить наличие пустой строки после операции trim, используйте isset + вашу функцию is_blank.

0 голосов
/ 23 августа 2010

Используйте empty.Он проверяет, является ли переменная либо 0, либо пустой, либо не установлена ​​вообще.

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