4
1

More than 3 years have passed since last update.

実務で出てきて少し混乱したPHPの文法

Last updated at Posted at 2020-09-09

はじめに

2020年の8月から都内の企業でWebエンジニアとして働いています。

開発環境はいわゆるフルスクラッチPHPなのですが、
私はRubyをメインで学習するプログラミングスクール出身でしたので、入社前はほとんどPHPに触ったことがありませんでした。

入社から1ヶ月ほど経った今では基礎文法も大体理解し、新しく出会った関数などをその都度調べながら
既存システムの改修業務を行っています。

そんな業務中、特に違和感のある記述を見かけたので
すぐに忘れないよう、Qiita上に残しておこうと思います。

問題のコード

isset($_REQUEST['search']) && $var = $_REQUEST['search'];

なんの変哲もないコードですが、人目見たときに混乱しました。



今までisset()を使う際は

if(isset($_REQUEST['search'])){
  $var = $_REQUEST['search'];
}

↑のようなパターンを見慣れていたので
論理演算子 && はANDの条件として使われているイメージしか持っていませんでした。


そんな中、出会った問題のコード

isset($_REQUEST['search']) && $var = $_REQUEST['search'];

初見時ワイ「何がANDやねん」
と、心の中でツッコミまくりました。

どういう動きをするのか調べて見ましたが、if文で条件分岐の例ばかり。
結局クリティカルな回答がすぐに見つからなかったので、先輩に質問させてもらいました。

結局のところ

左辺のisset()がtrueの場合に、右辺の代入が行われると教えていただきました。
if文とやってることはほとんど変わらないような気がしますが、今回のように単純な条件下ではワンライナーで読みやすくなる書き方ですね。

試しにpaiza.ioを使用して
以下のコードを実行してみました

$str = 'Hello!';
isset($str) && $var = $str;

echo $var;



結果
Image from Gyazo
や↑ったぜ

この手の書き方はPHP以外の言語でもたまに見かけるらしいです。

まとめ

可読性が上がる場合は今回のようなワンライナーによる記述を
自分も積極的に使っていこうと思います。

まだ入社間もないですが、実務で触るコードは楽しいですね。
しばらくはPHP漬けの日々を送ろうと思います。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1