[解決済み】書き込みコンテキストでメソッドの戻り値を使用することができない
質問
次のようなコードでうまくいくはずだと思うのですが、そうではありません。 (編集: PHP 5.5+で動作するようになりました) :
if (!empty($r->getError()))
ここで
getError()
は単純に
public function getError()
{
return $this->error;
}
なのに、こんなエラーが出てしまう。
can't use method return value in write context.
これはどういう意味ですか?これは単なる読み込みではないのですか?
解決方法は?
empty()
は参照によって値にアクセスする必要があり (その参照が存在するものを指しているかどうかをチェックするため)、 5.5 より前の PHP では関数から返される一時的な値への参照がサポートされていませんでした。
しかし、あなたが抱えている本当の問題は、あなたが
empty()
というのは、quot;empty" の値が "false" と異なると誤解しているためです。
Empty は、単に
!isset($thing) || !$thing
. チェックするものが常に存在する (PHP では関数呼び出しの結果は常に存在する) 場合は
empty()
関数は
否定演算子以外の何物でもない
.
PHP は空の概念を持っていない . false と評価される値は空であり、true と評価される値は空でない。同じことなんです。このコード
$x = something();
if (empty($x)) …
とこれを
$x = something();
if (!$x) …
があります。
どのデータ型でも、どのような場合でも、常に同じ結果になります。
(なぜなら
$x
が定義されています。
empty()
は冗長です)。
メソッドからの返り値は常に存在します(たとえあなたが
return
ステートメントを使用すると、返り値が存在し、その中に
null
). したがって
if (!empty($r->getError()))
は論理的に等価である。
if ($r->getError())
関連
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given [重複] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given.
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み] [Solved] Fatal error: 非オブジェクトのメンバ関数fetch_assoc()の呼び出し [重複]。
-
[解決済み] 入力ファイルが指定されていない
-
[解決済み】PHPのクラスが見つからないが、インクルードされている
-
[解決済み] PHP 未定義関数への呼び出し
-
[解決済み] $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Fatal error: 未定義の関数 sqlsrv_connect() を呼び出した。
-
[解決済み】phpのob_start()の使い道は?
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み】PHPの予期しないT_VARIABLEとは何ですか?
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
[解決済み】/var/www/htmlとは何ですか?[クローズド]
-
thinkphp5 timestamp 非整形の数値に遭遇した。