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括弧を使用すると、致命的なエラーが消えます。

于 2011-09-28T16:47:30.587 に答える