使用 isset() 的自定义函数在使用时返回未定义的变量

gre*_*tle 0 php variables undefined isset

我有一个字段,如果满足特定条件,则该字段具有自定义文本...如果不满足,则该字段为空白。

我已经编写了一个自定义函数测试是否设置了变量

function AmISet($fieldName) {

if (isset($fieldName)) {

    echo "I am set";
}else{
    echo "I am not set";    
    }
};
Run Code Online (Sandbox Code Playgroud)

但是当我附加该字段时,出现变量未定义的错误。但当我做常规时,isset($fieldName); 我没有问题。有什么方法可以解决这个问题并让我的函数而不是 isset() 执行此操作?

我想在函数中添加其他逻辑,但我只希望它在设置变量的情况下工作......但如果没有设置变量,我不希望出现未定义的错误。

我是 php 新手,非常感谢您能给我的任何帮助或指导。感谢您的帮助!

Ama*_*ali 5

您需要通过引用传递变量:

function AmISet(&$fieldName) {
    if (isset($fieldName)) {
        echo "I am set\n";
    } else {
        echo "I am not set\n";    
    }
}
Run Code Online (Sandbox Code Playgroud)

测试用例:

$fieldName = 'foo';
AmISet($fieldName); // I am set

unset($fieldName);
AmISet($fieldName); // I am not set
Run Code Online (Sandbox Code Playgroud)

然而,这个函数并没有什么用处,因为它只会输出一个字符串。您可以创建一个接受变量并返回(如果存在)的函数(来自这篇文章):

function issetor(&$var, $default = false) {
    return isset($var) ? $var : $default;
}
Run Code Online (Sandbox Code Playgroud)

现在可以这样使用:

echo issetor($fieldName); // If $fieldName exists, it will be printed
Run Code Online (Sandbox Code Playgroud)