2011-09-28 29 views
1

當試圖在empty(strip_tags($string))作爲條件在三元語句中執行賦值時出現錯誤Can't use function return value in write context。所以爲了測試,我擺脫了任務和三元陳述。但是,當它顯然不在寫入上下文中時,我仍然收到這個錯誤。strip_tags()給出「在寫入上下文中不能使用函數返回值」

想想吧,我不確定write context是什麼意思 - 我認爲這與分配有關,但我不能說我確實知道這一點。

爲什麼不這樣工作就像我認爲它應該?這對我來說很直截了當。我錯過了什麼?

$ cat test.php 
<? 

$string = "<br/>"; 

if (empty(strip_tags($string))) { 
    echo "It's empty.\n"; 
} else { 
    echo "It's not empty.\n"; 
} 

$ php test.php 
PHP Fatal error: Can't use function return value in write context in test.php on line 5 

回答

5

empty()要求您對變量進行操作,而不是對函數的輸出進行操作。相反,將strip_tags()的輸出存儲爲變量。

$stripped = strip_tags($string); 
if (empty($stripped)) { 
    echo "It's empty.\n"; 
} else { 
    echo "It's not empty.\n"; 
} 

這在empty() documentation解釋:

注: empty()只檢查變量,任何東西都不會導致解析錯誤。換句話說,以下內容不起作用:empty(trim($name))

+0

啊!我認爲這是'strip_tags()'行爲不端:) – user151841

4

empty需要一個變量。你傳遞一個函數返回值,這是不同的。

可以解決,通過將其放入括號:

if (empty((strip_tags($string)))) { 

但是做的更好like Michael wrote,這個建議是某種骯髒的黑客的。如果感興趣,已在Parentheses altering semantics of function call resultPHP Bug Report: #55222 Fatal Error disappears when using paranthesis中討論過。

+1

+1。不知道parens會如此評價。骯髒的黑客,但有趣。 –

相關問題