所以我正在提交一个表单,我正在尝试检查一个字段是否为空,我这样做:
if(empty($this->_getParam('my_field')))
而且它不起作用,但是如果我只使用它就可以了$_POST['my_field]
<b>Fatal error</b>: Can't use method return value in write context in....
$this->_getParam
为了工作,我应该怎么做?因为我猜这不是$_POST
在框架上使用的好选择。
所以我正在提交一个表单,我正在尝试检查一个字段是否为空,我这样做:
if(empty($this->_getParam('my_field')))
而且它不起作用,但是如果我只使用它就可以了$_POST['my_field]
<b>Fatal error</b>: Can't use method return value in write context in....
$this->_getParam
为了工作,我应该怎么做?因为我猜这不是$_POST
在框架上使用的好选择。
这是你的问题:Can't use method return value in write context
这是一个很好的解释为什么必须这样做:Can't use method return value in write context
要使用 empty() 您必须首先获取返回值
$field = $this->_getParam('my_field');
if(empty($field)){
//is empty
}
(更新:这不是 PHP 版本 >= 5.5 的问题) empty($this->_getParam('my_field')) 可以正常工作。
其他答案都是正确的。一种替代方法是为您的调用提供默认值_getParam()
,例如null
. 然后你可以打电话
is_null($this->_getParam('myfield',null))
这种方法可能更可取,因为 Zend 已经确定了该参数的空性。
empty
-like isset
- 不是真正的功能,而是一种语言结构。所以你只能使用变量作为它的唯一参数(没有表达式,没有函数结果)。
但是,您可以使用临时变量:
$my_field = $this->_getParam('my_field');
if(empty($my_field))
....
您可以使用临时变量
$field = $this->_getParam('my_field');
if(empty($field)){
//you code here
}