花花公子,
有没有更简洁的方式来写下面的声明?如果我不检查是否存在数组键,则会收到PHP警告.但是,下面的内容有点过,嗯,罗嗦.
谢谢!
$display_flag = false;
if (array_key_exists('display_flag',$pref_array) {
$display_flag = $pref_array['display_flag'];
}
Run Code Online (Sandbox Code Playgroud)
如果$display_flag是布尔值:
$display_flag = isset($pref_array['display_flag']) && $pref_array['display_flag'];
Run Code Online (Sandbox Code Playgroud)
如果是字符串:
$display_flag = isset($pref_array['display_flag']) ? $pref_array['display_flag'] : false;
Run Code Online (Sandbox Code Playgroud)
从 PHP 7 开始,您可以使用新的空合并运算符。
$display_flag = $pref_array['display_flag'] ?? false;
Run Code Online (Sandbox Code Playgroud)
你的方式很好,因为你应该验证该值是否确实存在,但你也可以执行三元操作:
$display_flag = (isset($pref_array['display_flag'])) ? (bool) $pref_array['display_flag'] : false;
Run Code Online (Sandbox Code Playgroud)
如果已设置,我会将 display_flag 的内容强制转换为 bool,因此在任何情况下都可以确保您得到布尔值。
您也可以(但我不建议这样做),用 @ 压制警告:
$display_flag = @$pref_array['display_flag'];
Run Code Online (Sandbox Code Playgroud)