これを行うためのよりエレガントな方法があるかどうか疑問に思っています:
$foo = (isset($bar) and array_key_exists('meh', $bar)) ? $bar['meh'] : '';
isset
パーツを削除すると$bar
、配列でない場合はPHPが警告を発行し、パーツを削除すると、キーが配列内にないarray_key_exists
場合はPHPが警告を発行します。meh
同じ目的を達成するための、より優雅で警告のない方法はありますか?
これを行うためのよりエレガントな方法があるかどうか疑問に思っています:
$foo = (isset($bar) and array_key_exists('meh', $bar)) ? $bar['meh'] : '';
isset
パーツを削除すると$bar
、配列でない場合はPHPが警告を発行し、パーツを削除すると、キーが配列内にないarray_key_exists
場合はPHPが警告を発行します。meh
同じ目的を達成するための、より優雅で警告のない方法はありますか?
キーを直接参照できます。$ barが未定義の場合、内部isset
では例外もスローされません。
$foo = isset($bar['meh']) ? $bar['meh'] : '';
array_key_existsとissetの違いは、キーが値に対応している場合にisset
返されることです。したがって、上記のコードでは、値によって、ではなく空の文字列が開始されます。それが問題である場合は、現在のアプローチが最適です。FALSE
NULL
NULL
$foo
NULL
言及した警告からコードを「保護」するために必要な手順を正確に実行します。
ただし、警告には理由があります。通常、アクセスしようとしている変数が初期化されない状況を防ぐことができるかどうかを確認する方が理にかなっています。