2013-05-02 42 views
1

此代码:为什么这个表达式返回错误,我该如何解决?

if(!empty(trim($_POST['post']))){ } 

这个错误:

Fatal error: Can't use function return value in write context in ...

如何解决,并避免做2个检查(修剪,然后空)?

我想检查POST是否不仅仅是一个空格。

+2

你有没有实际上阅读[文档页面](http://php.net/manual/en/function.empty.php)?它清楚地表明,只有变量在PHP中使用'empty()'<5.5 – 2013-05-02 14:41:45

+0

请参阅此答案:http://stackoverflow.com/a/2173318/561731 – Neal 2013-05-02 14:42:19

+0

我想检查POST是否不仅仅是一个空格。 – xRobot 2013-05-02 14:43:55

回答

1

documentation它实际上具体解释了这个问题,然后给你一个替代解决方案。您可以使用

trim($name) == false. 
+0

很明显,为什么PHP文档甚至建议这种解决方案超越了我。为什么促进不必要的强制类型? (我不是说它慢,但这是问题的原理!) – cmbuckley 2013-05-02 23:04:27

+0

我不确定,但它是最短的解决方案。 – christopher 2013-05-03 09:18:47

+0

'!trim($ name)'更短:-)就此而言,trim($ name)==='''! – cmbuckley 2013-05-11 13:05:46

2
if (trim($_POST['post'])) { 

功能上与您似乎试图做的相同。没有必要拨打!empty

3

你不能使用的功能里面issetempty语句。只需将修剪结果分配给一个变量即可。

$r = trim($_POST['blop']); 

if(!empty($r)).... 

编辑:在此之前PHP 5.5

2
if (trim($_POST['post']) !== "") { 
    // this is the same 
} 
0

在PHP中,函数isset()empty()是彪测试变量

这意味着这个

if(empty("someText")) { ... } 

或该

if(isset(somefunction(args))) { ... } 

不作任何SENCE,因为函数的结果总是被定义,e.t.c.

这些功能用于告诉阉一个变量被定义或没有,所以参数必须我一个变量,或数组索引,那么它会检查指数(工作在对象上也是如此),像

if(!empty($_POST["mydata"])) { 
    //do something 
} else { 
    echo "Wrong input"; 
} 
相关问题