Can’t use function return value in write context とかいうPHPのエラー

  • 公開日:2015/8/7
この記事は最終更新日から3年以上が経過しています。

サーバー移行したら「Can’t use function return value in write context」とかいうPHPのエラーが出た。前のサーバーでは問題なく動くのになんだこれ?ってなったのでメモ。

発生したのは以下の記述。

if (empty(myFunc()))
{
    // ここに処理
}

これを以下にように修正すれば解決する。

$res = myFunc();
if (empty($res))
{
    // ここに処理
}

原因は、empty()の引数に関数を書いてしまっているから。
マニュアルにもありますが、PHP5.5より前のバージョンでは、empty()がサポートするのは変数だけ。それ以外の値をチェックするとパースエラーになるのです。

なので、こんなのもダメ。

if (empty(trim($name)))
{
    // ここに処理
}

もっとちゃんとPHPを知らなきゃダメだな(反省)。

PHP: empty – Manual