1

Can't use function return value in write context尝试empty(strip_tags($string))在三元语句中作为条件进行赋值时出现错误。所以为了测试,我去掉了赋值和三元语句。但是当它显然不在写入上下文中时,我仍然会收到此错误。

想一想,我不确定是什么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
4

2 回答 2

5

empty()要求您对变量而不是函数的输出进行操作。相反,将 的输出存储strip_tags()到变量中。

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

这在empty()文档中进行了解释:

注意: empty()仅检查变量,因为其他任何内容都会导致解析错误。换句话说,以下内容将不起作用:empty(trim($name)).

于 2011-09-28T16:46:50.420 回答
4

empty需要一个变量。你传递一个函数返回值,这是不同的。

您可以通过将其放入括号来解决此问题:

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

但最好像迈克尔写的那样做,这个建议是一种肮脏的黑客行为。如果有兴趣,在括号中讨论了改变函数调用结果的语义和PHP 错误报告:#55222 Fatal Error 在使用括号时消失

于 2011-09-28T16:47:30.587 回答