如果满足特定条件,我有一个依赖的字段具有自定义文本。。。如果不是,则字段为空。
我写了一个自定义函数测试,如果变量设置为
function AmISet($fieldName) {
if (isset($fieldName)) {
echo "I am set";
}else{
echo "I am not set";
}
};
但当我把它附加到字段时,我会得到一个错误,即变量是未定义的。但当我做常规isset($fieldName);
我没有问题。有没有办法绕过这个问题,让我的函数来代替isset()?
我想在函数中添加其他逻辑,但我只希望它在变量被设置的情况下工作。。。但我不想要未定义的错误,如果不是的话。
我是php的新手,非常感谢你能给我的任何帮助或指导。谢谢你的帮助!
您需要通过引用传递变量:
function AmISet(&$fieldName) {
if (isset($fieldName)) {
echo "I am set'n";
} else {
echo "I am not set'n";
}
}
测试用例:
$fieldName = 'foo';
AmISet($fieldName); // I am set
unset($fieldName);
AmISet($fieldName); // I am not set
但是,这个函数并没有实际用处,因为它只会输出一个字符串。你可以创建一个函数,接受一个变量并返回(如果它存在的话):
function issetor(&$var, $default = false) {
return isset($var) ? $var : $default;
}
现在它可以这样使用:
echo issetor($fieldName); // If $fieldName exists, it will be printed
$fieldName
来自当复选框检查。如果选中该框,则进行查询是从查询中设置的,如果不存在,则它不存在并且字段为空。
过滤功能是为这类任务设计的:
<input type="foo" value="1">
$foo = filter_input(INPUT_POST, 'foo')==='1';
(还有一个特定的FILTER_VALIDATE_BOOLEAN
过滤器可以作为第二个参数传递。)
现在,您有了一个始终存在的纯PHP布尔值。