1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

アイエンター #1Advent Calendar 2018

Day 6

PHP 比較系演算子の話

Posted at

PHPにはいろんな演算子がありますよね。
例えば文字列結合の「.=」や三項演算子「?」などなど

今回は自分も最近知った、Null合体演算子、エルビス演算子を紹介したいと思います。

Null合体演算子「??」

PHP7から導入されました。
この演算子は未定義変数初期化に大いに役立ちます。

例えば下記コードのようにissetメソッド用いて変数を初期化したいことは多々あると思います

<?php
if (isset($hoge)) {
    $output = $hoge;
} else {
    $output = 'not_hoge';
}
echo $output;  //not_hoge

ここで上記のコードをNull合体演算子を使って表現してみます。

<?php
$output = $hoge ?? 'not_hoge';
echo $output; //not_hoge

このように初期化をNull合体演算子を使うと、
余計なif,elseを使わずに表現できます!
ちなみに名前に騙されそうですが、is_nullではなく、issetで判定してるみたいです。

エルビス演算子「?:」

これはPHP5.3から導入されている演算子です。
こちらも変数初期化のときに役に立ちます。

<?php
$hoge = 'hoge';  //この行を消すと「Notice: Undefined variable: hoge」
if ($hoge) {
    $output = $hoge;
} else {
    $output = 'not_hoge';
}
echo $output; // hoge

上記のように変数で判定している場合がありますね。
これをエルビス演算子を使って再現すると下記のようになります。

<?php
$hoge = 'hoge';   // この行を消すと上記と同様に「Notice: Undefined variable: hoge」
$output = $hoge ?: 'not_hoge';
echo $output; // hoge

Null合体演算子のissetなし版という感じですね。

この演算子の注意点は、未定義判定は行わないことです。
初期化してない変数に使用するとNotice出てきます

ちなみにこの演算子の名前の由来はエルビス・プレスリーらしいです。(下記にリンクあります)

参考

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?