strip_tags () дает "не может использовать возвращаемое значение функции в контексте записи", когда не записывается - PullRequest
1 голос
/ 28 сентября 2011

Я получил ошибку 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

Ответы [ 2 ]

5 голосов
/ 28 сентября 2011

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)).

4 голосов
/ 28 сентября 2011

empty требует переменной. Вы передаете возвращаемое значение функции, это другое.

Вы можете обойти это, заключив его в квадратные скобки:

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

Но лучше сделайте , как Майкл написал , это предположение - своего рода грязный взлом. Если интересно, обсуждалось в круглых скобках, изменяющих семантику результата вызова функции и Отчет об ошибке PHP: # 55222 Неустранимая ошибка исчезает при использовании парантеза .

...