PHP,更简单的方法来获取没有警告的数组值

che*_*711 3 php

花花公子,

有没有更简洁的方式来写下面的声明?如果我不检查是否存在数组键,则会收到PHP警告.但是,下面的内容有点过,嗯,罗嗦.

谢谢!

$display_flag = false;
if (array_key_exists('display_flag',$pref_array) { 
    $display_flag = $pref_array['display_flag']; 
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 8

如果$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)


Wes*_*y92 5

从 PHP 7 开始,您可以使用新的空合并运算符

$display_flag = $pref_array['display_flag'] ?? false;
Run Code Online (Sandbox Code Playgroud)


Mik*_*ell 0

你的方式很好,因为你应该验证该值是否确实存在,但你也可以执行三元操作:

$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)