おい、
以下のステートメントを書くためのより簡潔な方法はありますか?配列キーが存在するかどうかを確認しないと、PHPの警告が表示されます。しかし、以下も少しです、えーと、言葉遣いです。
ありがとう!
$display_flag = false;
if (array_key_exists('display_flag',$pref_array) {
$display_flag = $pref_array['display_flag'];
}
おい、
以下のステートメントを書くためのより簡潔な方法はありますか?配列キーが存在するかどうかを確認しないと、PHPの警告が表示されます。しかし、以下も少しです、えーと、言葉遣いです。
ありがとう!
$display_flag = false;
if (array_key_exists('display_flag',$pref_array) {
$display_flag = $pref_array['display_flag'];
}
$display_flag
ブール値の場合:
$display_flag = isset($pref_array['display_flag']) && $pref_array['display_flag'];
文字列の場合:
$display_flag = isset($pref_array['display_flag']) ? $pref_array['display_flag'] : false;
PHP 7以降、新しいnull合体演算子を使用できます。
$display_flag = $pref_array['display_flag'] ?? false;
// Get the $pref_array from wherever
$default_prefs = array(
"display_flag" => false,
);
$pref_array = array_merge($default_prefs, $pref_array);
// Now you know it's always defined with default values
値が実際に存在するかどうかを検証する必要があるため、この方法は問題ありませんが、3次操作を実行することもできます。
$display_flag = (isset($pref_array['display_flag'])) ? (bool) $pref_array['display_flag'] : false;
display_flagの内容が設定されている場合はboolに型キャストするので、どちらの場合もブール値が保証されます。
また、@で警告をスケルチすることもできます(ただし、お勧めしません)。
$display_flag = @$pref_array['display_flag'];
もう1つの簡単なオプションは次のとおりです。
array_get($variable, 'keyName', null)
3番目の引数はデフォルト値です。