4

おい、

以下のステートメントを書くためのより簡潔な方法はありますか?配列キーが存在するかどうかを確認しないと、PHPの警告が表示されます。しかし、以下も少しです、えーと、言葉遣いです。

ありがとう!

$display_flag = false;
if (array_key_exists('display_flag',$pref_array) { 
    $display_flag = $pref_array['display_flag']; 
}
4

5 に答える 5

8

$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;
于 2012-12-07T01:40:35.750 に答える
6

PHP 7以降、新しいnull合体演算子を使用できます。

$display_flag = $pref_array['display_flag'] ?? false;
于 2017-01-28T07:06:58.513 に答える
1
// 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
于 2012-12-07T01:40:42.640 に答える
0

値が実際に存在するかどうかを検証する必要があるため、この方法は問題ありませんが、3次操作を実行することもできます。

$display_flag = (isset($pref_array['display_flag'])) ? (bool) $pref_array['display_flag'] : false;

display_flagの内容が設定されている場合はboolに型キャストするので、どちらの場合もブール値が保証されます。

また、@で警告をスケルチすることもできます(ただし、お勧めしません)。

$display_flag = @$pref_array['display_flag'];    
于 2012-12-07T01:42:12.583 に答える
0

もう1つの簡単なオプションは次のとおりです。

array_get($variable, 'keyName', null)

3番目の引数はデフォルト値です。

于 2016-09-15T17:16:36.500 に答える