はじめに
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"