伙计们,
有没有更简洁的方法来写下面的语句?如果我不检查数组键是否存在,我会收到 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
您拥有它的方式很好,因为您应该验证该值是否确实存在,但您也可以执行三元操作:
$display_flag = (isset($pref_array['display_flag'])) ? (bool) $pref_array['display_flag'] : false;
如果设置了 display_flag 的内容,我会将其类型转换为 bool,因此在任何一种情况下都可以确保您是布尔值。
你也可以(但我不推荐),用@压制警告:
$display_flag = @$pref_array['display_flag'];
另一个更简单的选择是:
array_get($variable, 'keyName', null)
第三个参数是默认值。