Check if value isset and null

前端 未结 8 474
迷失自我
迷失自我 2020-11-30 01:26

I need to check if value is defined as anything, including null. isset treats null values as undefined and returns false. Take the following as an

8条回答
  •  情话喂你
    2020-11-30 02:18

    The following code written as PHP extension is equivalent to array_key_exists($name, get_defined_vars()) (thanks to Henrik and Hannes).

    // get_defined_vars()
    // https://github.com/php/php-src/blob/master/Zend/zend_builtin_functions.c#L1777
    // array_key_exists
    // https://github.com/php/php-src/blob/master/ext/standard/array.c#L4393
    
    PHP_FUNCTION(is_defined_var)
    {
    
        char *name;
        int name_len;
    
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
            return;
        }
    
        if (!EG(active_symbol_table)) {
            zend_rebuild_symbol_table(TSRMLS_C);
        }
    
        if (zend_symtable_exists(EG(active_symbol_table), name, name_len + 1)) {
            RETURN_TRUE;
        }
    
    }
    

提交回复
热议问题