custom function that uses isset() returning undefined variables when used [duplicate]

那年仲夏 提交于 2020-01-17 14:50:49

问题


I have a field that depends has custom text if a certain condition is met...and if it isn't the field is blank.

I have written a custom function test if a variable is set

function AmISet($fieldName) {

if (isset($fieldName)) {

    echo "I am set";
}else{
    echo "I am not set";    
    }
};

but when I attach it the field I get an error that the variable is undefined. But when I do a regular isset($fieldName); I don't have a problem. Is there any way to get around this and have my function do this instead of the isset()?

I want to add other logic in the function but I only want it to work if the variable is set...but I don't want the undefined error if it is not.

I am new to php and really appreciate any help or direction you can give me. Thank you for the help!


回答1:


You need to pass the variable by reference:

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

Test cases:

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

unset($fieldName);
AmISet($fieldName); // I am not set

However, this function is not useful as it is, because it will only output a string. You can create a function that accepts a variable and return if it exists (from this post):

function issetor(&$var, $default = false) {
    return isset($var) ? $var : $default;
}

Now it can be used like so:

echo issetor($fieldName); // If $fieldName exists, it will be printed



回答2:


the $fieldName comes from a query that is performed when a checkbox is checked. If the box is checked the query is made and the variable is set from the query, if not it doesn't exist and the field is blank.

Filter functions are designed for this kind of tasks:

<input type="foo" value="1">
$foo = filter_input(INPUT_POST, 'foo')==='1';

(There's also a specific FILTER_VALIDATE_BOOLEAN filter you can pass as second argument.)

And now you have a pure PHP boolean that always exists.



来源:https://stackoverflow.com/questions/23344821/custom-function-that-uses-isset-returning-undefined-variables-when-used

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!