我想检查zend,发布的表单值'name'是否包含值。为此我使用了以下代码
if ($this->_getPatram('name') != null ) {
echo 'field name contains value';
} else {
echo 'field name contains null value';
}
if ($this->_hasParam('name')) {
echo 'field name contains value';
} else {
echo 'field name contains null value';
}
字段名称包含空值(结果正确)
第二种方法字段名称包含值(结果错误)
那么这两者有什么区别? _hasParam和_getParam
答案 0 :(得分:2)
$this->_hasParam('name')
返回true,因为$this
具有名称为name
的参数。
字段名称包含值
(结果错误)
结果是正确的。 $this
对象实际上有name
字段 - 其值恰好为null
的事实不是_hasParam
函数的关注点。
使用_hasParam
检查对象是否具有特定参数,并_getParam
获取该参数的值。
例如,如果要检查提交的表单是否具有名称为foo
的属性,请使用_hasParam("foo")
。要获得foo
的值,请使用_getParam("foo")
答案 1 :(得分:1)
_hasParam()
返回param是否存在,_getParam()
返回实际值。不同之处在于,有几个值被认为等于null
,即使它们确实存在,例如0
或''
'。请使用===
或!==
进行比较。