【PHP】Fatal error: Can't use function return value in write context の話

おはようございます。

今日も約5kmほどランニング終了。
程よい疲れとともに、現在休憩中。

仕事が煮詰まったのでいつもより早めに走りにいったのですが、走ったことが良い気分転換になって新しいアイデアを見つけることが出来た。
眠さがMAXになるデメリットはありますが、また頑張っていきたいと思います。

/*————————————————————————————————————*/
ということで、今日は「Fatal error: Can't use function return value in write context 」の話です。

PHPで「empty」や「isset」を利用していると、題名のエラーが出る時があります。

このエラーは、上記の構文の中の引数が関数ではあってはならないというルールに反しているために起こるエラーです。

エラーになる例文

<?php
$hoge = "1-2-3-4-5-6-7";
if(isset(explode("-",$hoge))){
  echo "issetです";
} else {
  echo "issetじゃないです";
}
?>

あまりいい例文が思い浮かばなかったので恐縮ですが、上記のプログラムですが掲題のエラーが発生します。

これは「isset」の引数が「explode」による引数を指定していることが原因です。

では、どうすればいいのでしょうか

エラーにならない方法

<?php 
$hoge = "1-2-3-4-5-6-7";
$hoge = explode("-",$hoge);//一度$hogeに格納する
if(isset($hoge)){
  echo "issetです";
} else {
  echo "issetじゃないです";
} 
//“issetです”と出力される。
?>

と書くとエラーになりません。

上記のように、一度引数を変数に格納してから「isset」を利用することでプログラムが実行されます。
※これは「isset」だけじゃなくて「empty」でも同様ですのでご注意ください。

色んなオレオレfunctionを作って、返り値の判定をしたいときにあんまり考えずに書いちゃうとよく出てきますので注意が必要ですね。

ご一読頂きまして、ありがとうございました。