我有一个依赖于自定义文本的字段,如果满足某个条件......如果不是,则该字段为空。
如果设置了变量,我已经编写了自定义函数测试
function AmISet($fieldName) {
if (isset($fieldName)) {
echo "I am set";
}else{
echo "I am not set";
}
};
但是当我将它附加到字段时,我得到一个错误,即变量未定义。但是当我定期isset($fieldName);
时
我没有问题。有没有办法绕过这个并让我的函数执行此操作而不是isset()?
我想在函数中添加其他逻辑,但我只想让它在设置变量时才能工作......但如果不是,我不想要未定义的错误。
我是php的新手,非常感谢您能给我的任何帮助或指导。 谢谢你的帮助!
答案 0 :(得分:3)
您需要通过引用传递变量:
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
但是,这个函数没有用,因为它只会输出一个字符串。您可以创建一个接受变量的函数,如果存在则返回(来自this post):
function issetor(&$var, $default = false) {
return isset($var) ? $var : $default;
}
现在它可以这样使用:
echo issetor($fieldName); // If $fieldName exists, it will be printed
答案 1 :(得分:1)
$fieldName
来自一个复选框时执行的查询 检查。如果选中此框,则查询和变量 是从查询中设置的,如果不存在,则该字段为空。
Filter functions专为此类任务而设计:
<input type="foo" value="1">
$foo = filter_input(INPUT_POST, 'foo')==='1';
(还有一个特定的FILTER_VALIDATE_BOOLEAN
过滤器,您可以将其作为第二个参数传递。)
现在你有一个始终存在的纯PHP布尔值。