LoginSignup
126
109

More than 5 years have passed since last update.

PHP7調査(11)??演算子の新設

Last updated at Posted at 2015-04-11

PHP7で2項演算子「??」が新設されます。左オペランドがnull以外の値であればその値を、そうでなければ右オペランドを返すようなものです。

<?php
var_dump(null ?? false ?? true); // false

これはPHP 5.3で導入されたエルビス演算子「?:」と少し似ています。エルビス演算子は真偽の判断を行いますが、??演算子はnullかどうかの判断を行う点が異なっています。

<?php
var_dump(null ?: false ?: true); // true

それだけでなく、??演算子はisset()と同様に未定義値をチェックしてもエラーになりません。これは非常に大きな違いで、??演算子があれば今までのisset()地獄から解放されるかもしれません。

<?php
var_dump($arr["foo"] ?: "bar"); // 未定義だとUndefined variableかUndefined indexで怒られちゃう
var_dump(isset($arr["foo"]) ? $arr["foo"] : "bar"); // 結局こう書いてたよね…

var_dump($arr["foo"] ?? "bar"); // PHP7ではこれで動く!

参照

126
109
3

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
126
109