2013-05-02 61 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"; 
} 
相關問題