PHP-在函数中使用isset无法正常工作..?

pni*_*ols 5 php function

我有一个PHP脚本,在加载时,首先检查它是否通过POST加载,如果不是,则GET ['id']是一个数字。

现在我知道我可以这样做:

if(isset($_GET['id']) AND isNum($_GET['id'])) { ... }

function isNum($data) {  
    $data = sanitize($data);
    if ( ctype_digit($data) ) {
        return true;
    } else {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我想这样做:

if(isNum($_GET['id'])) { ... }

function isNum($data) {  
    if ( isset($data) ) {
        $data = sanitize($data);
        if ( ctype_digit($data) ) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我这样尝试时,如果未设置$ _GET ['id'],则会收到未定义索引的警告:id ...就像我将$ _GET ['id']放入函数中一样调用,它会发出警告...即使我的函数将检查是否设置了var ...

还有另一种方法可以做我想做的事情,还是我被迫始终检查isset然后添加其他要求。

the*_*iko 4

我总是包含一些其他语言提供的便利功能:get。

function get($needle, $haystack, $return=null) {
    return array_key_exists($needle, $haystack) ? $haystack[$needle] : $return;
}
Run Code Online (Sandbox Code Playgroud)

现在您可以致电:

if(isNum(get('id', $_GET))) {
    // do something here
}
Run Code Online (Sandbox Code Playgroud)