はじめに
PHP で配列の要素を扱うとき、存在しないキーにアクセスするとエラーになってしまいます。
今回のコードは「存在しないキーにアクセスしたときの挙動」を、??
(null合体演算子)や @
(エラー制御演算子)とあわせて確認する内容です。試験対策だけでなく、日常のコーディングでも役立つポイントですので整理してみます。
目次
サンプルコード
<?php
declare(strict_types=1);
error_reporting(-1);
$arr = [
'key' => 123,
];
$val = $arr['no key'] ?? 'default';
var_dump($val);
$val2 = @$arr['no key2'] ?? 'default 222';
var_dump($val2);
ポイント解説
$arr['no key'] ?? 'default'
$arr['no key']
は存在しません。- ただし null合体演算子
??
によって、存在しないときは'default'
が返ります。
👉 実際の出力:
string(7) "default"
@$arr['no key2'] ?? 'default 222'
$arr['no key2']
も存在しません。- そのあと
??
が評価され、'default 222'
が返ります。
👉 実際の出力:
string(11) "default 222"
まとめ
??
は「値が存在しなければデフォルト値を返す」という便利な演算子。@
を付ければその警告を抑制できるが、基本的には 安易に使うべきではない(エラーを握りつぶす可能性があるため)。
✅ 実行結果まとめ
string(7) "default"
string(11) "default 222"